2015-02-10 47 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