2015-02-10 59 views
1

我创建了以下简单的机制,以检查登录的用户是否喜欢不是。Laravel的用户喜欢后的效率

我不知道它是否有效,是否有使之更好

邮政型号反正:

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 
+5

我投票结束这个问题作为题外话题,因为它是关于代码审查,而不是一个具体的编程问题。尝试http://codereview.stackexchange.com/。 – Chris 2015-02-10 15:37:46

+0

谢谢克里斯,你是对的 – 2015-02-10 15:42:52

回答

1

Tha我看起来不错。我不认为有什么方法可以获得更好的表现,并保持雄辩的关系和急切的加载的简单性。

然而一个另外,为了提高你的语法有点...

让你@if变得有点漂亮我想补充一个属性访问器:

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

然后在您的视图:

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

非常感谢! :) – 2015-02-10 15:47:09