Laravel添加用户喜欢的帖子效率

时间:2015-02-10 15:30:02

标签: php laravel eloquent

我创建了以下简单机制,以便检查记录的用户是否喜欢不发布的帖子。

我想知道它是否有效以及是否还有更好的方法

发布模型:

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();
}

后控制器:

$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

1 个答案:

答案 0 :(得分:1)

这对我来说很好看。而且我认为没有任何方法可以获得更好的表现并保持雄辩的关系和急切加载的简单性。

然而另外一个,为了改善你的语法......

我会添加一个属性访问器,以便@if变得更漂亮:

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

然后在你看来:

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