Laravel 按分页降序或升序排序
Posted
技术标签:
【中文标题】Laravel 按分页降序或升序排序【英文标题】:Laravel sort by descending or ascending with pagination 【发布时间】:2018-03-18 09:28:30 【问题描述】:我想通过分页进行升序或降序排序
return \App\User:: paginate($request->per_page);
我如何添加这样的排序方式
return \App\User:: paginate($request->per_page)-sortBy(
$request->sort_field, $request->sort_order
);
bur 以上失败的地方
$request->sort_order //asc or desc
以上返回错误
"asort() expects parameter 2 to be integer, string given"
【问题讨论】:
可能重复:***.com/questions/17429427/… @teeyo 您的重复引用会引发错误 检查我的答案:) 【参考方案1】:我看不到你可以在 Laravel 文档中输入顺序(DESC 或 ASC)的语法,试试这个:
if ($request->sort_order == 'asc')
return \App\User::paginate($request->per_page)->sortBy($request->sort_field);
return \App\User::paginate($request->per_page)->sortByDesc($request->sort_field);
阅读更多文档:https://laravel.com/docs/5.5/collections#method-sortby
【讨论】:
更新 -sortBy 为 ->sortBy 否则上面会抛出错误 现在可以了,谢谢,但上面的 Ron 回答提供了更简洁的语法 最重要的是你得到了答案,这就是 SO 的意义所在;)【参考方案2】:你可以试试
User::orderBy($request->sort_field, $request->sort_order)->paginate($request->per_page);
来源:https://laracasts.com/discuss/channels/laravel/combining-paginate-with-orderby
【讨论】:
【参考方案3】:使用 Eloquent,您可以快速轻松地对数据进行排序和分页。
例如,我想对用户表中存在的所有用户进行排序。
//---Sort Ascending
$users = User::orderBy('id', 'ASC')->Paginate(10);
//---Sort Descending
$users = User::orderBy('id', 'DESC')->Paginate(10);
【讨论】:
以上是关于Laravel 按分页降序或升序排序的主要内容,如果未能解决你的问题,请参考以下文章