[英]Laravel 5.4 collection sortByDesc not working
我有兩個關於sortByDesc
查詢,我收集並合並它們,然后我做了sortByDesc
但它不是排序集合。
$f_games = collect(Game::with('fUser', 'sUser')->where('first_user_id', Auth::user()->id)>get());
$s_games = collect(Game::with('fUser', 'sUser')->where('second_user_id', Auth::user()->id)->get());
$response = $f_games->merge($s_games)->sortByDesc('id');
不需要在collect()
包裝, $f_games
和$s_games
將是沒有額外包裝的集合:
$f_games = Game::with('fUser', 'sUser')->where('first_user_id', Auth::user()->id)>get();
$s_games = Game::with('fUser', 'sUser')->where('second_user_id', Auth::user()->id)->get();
$response = $f_games->merge($s_games)->sortByDesc('id');
但最好的辦法是:
$user_id = Auth::user()->id;
$f_s_games = Game::with('fUser', 'sUser')
->where('first_user_id', $user_id)
->orWhere('second_user_id',$user_id)
->orderBy('id', 'desc')
->get();
sortByDesc
方法按屬於模型中某個雄辯關系的字段對集合進行排序。
如果您嘗試使用sortByDesc
為模型本身(您當前的模型對象)對集合進行排序,請使用orderBy
而不是sortByDesc
示例:
對於模型本身
{$collection_list = $this->model_name->orderBy('field_name','DESC')->get();}
對於將在視圖中延遲加載的關系
{$collection_list = $this->model_name->get()->sortBy('table_name.field_name', SORT_REGULAR, true);}
注意: sortByDesc
內部調用sortBy()
降序,true 表示降序,false 表示升序。
您可以在排序結束時使用values()
,如文檔中所述
$gameCollection = collect($game);
$sorted = $gameCollection->sortByDesc('date');
return $sorted->values()->all();
在你的情況下應該是
$response = $f_games->merge($s_games)->sortByDesc('id')->values();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.