2015-05-06 73 views
2

我有一張名爲images的表格,用戶可以爲每張圖片投票。
當用戶投票圖片時,我在我的votes表中添加了一個新行來註冊投票,user_id雄辯 - 獲取相關元素

圖片:
- 標識
- 圖片名稱

投票:
- USER_ID
- Image_id

現在我需要通過投票數量排序的所有圖像,怎麼能我做?

我在Image.php文件添加了一個新方法:

public function votes() 
    { 
     return $this->hasMany('App\Vote'); 
    } 

我應該得到的所有圖像,然後命令它?

我在想:

$images = Image::with('votes')->get(); 

它是正確的做法或有雄辯一個隱藏的功能,這樣做呢?

回答

2

試試這個:

$images = Image::with('votes')->get()->sortByDesc(function($sort) 
{ 
    return $sort->votes->count(); 
}); 

對於分頁請查看manual pagination

+0

快到了,我需要的結果'DESC'順序,我需要一個分頁。對於DESC訂單,我已將'second'和'third'參數添加到'sortBy'函數中,但分頁如何? ' - >分頁「不起作用 –

+0

你想獲得特定的頁面(如果是這樣,頁面大小是多少)還是創建一個分頁器? –

+0

$ images = Image :: with('votes') - > get() - > sortBy(function($ sort) { return $ sort-> votes-> count(); },SORT_REGULAR,true); –