Laravel 用户是否喜欢 post 效率

Laravel did user liked the post efficency

我创建了以下简单机制来检查登录用户是否喜欢 post 不。

我想知道它是否有效,是否有办法让它变得更好

Post 型号:

public function likes()
{
    return $this->hasMany('Like');
}

public function likedByUser()
{

if (Auth::user())
        return $this->likes()->where('user_id', Auth::user()->id);
    else
        return array();
}

Post 控制器:

$posts = Post::with('likedByUser')
->selectRaw('*, (score / (NOW() - posts.created_at)) as `ordering_value`')
->orderBy('ordering_value', 'DESC')
->orderBy('created_at', 'DESC')->paginate(12);
return $posts;

posts.blade:

@if(isset($post->likedByUser[0]))
style="background-position: right;" data-value="liked"
@endif

我觉得不错。而且我认为没有任何方法可以获得更好的性能并保持 Eloquent 关系和预加载的简单性。

但是,要稍微改进一下语法...

我会添加一个属性访问器,这样您的 @if 会更漂亮一些:

public function getLikedAttribute(){
    return ! $this->likedByUser->isEmpty();
}

然后在您看来:

@if($post->liked)
    style="background-position: right;" data-value="liked"
@endif