Laravel9中如何设置Kyslik/column-sortable指定列默认降序?
问题:Laravel9中Kyslik/column-sortable设置「最新列表」默认降序
我在Laravel9中使用Kyslik/column-sortable实现排序功能,当前有「最新列表」和「ABC」两种排序选项。希望仅将「最新列表」的默认排序设为降序,目前点击「最新列表」后URL参数为sort=created_at&direction=asc,想要改为sort=created_at&direction=desc,但不知如何操作。附上相关控制器和视图代码,请教实现方法:
控制器代码
public function company_list() { $company_total = User::all(); $users=User::sortable()->orderBy('created_at','desc')->paginate(5); return view('/company-list',compact('users','company_total')); }
视图代码
<p class="companies-content__order-by-link link-asc">@sortablelink('created_at', 'New Listings')</p> <p class="companies-content__order-by-link link-asc">@sortablelink('company_name_abc', 'ABC')</p>
解决方案
只需修改视图中「最新列表」的排序链接,给@sortablelink添加第三个参数指定默认排序方向即可:
将视图里的「最新列表」链接代码替换为:
<p class="companies-content__order-by-link link-asc">@sortablelink('created_at', 'New Listings', ['direction' => 'desc'])</p>
补充说明:
- 这样设置后,首次点击「最新列表」时,URL参数会自动带上
direction=desc,满足需求。 - 控制器里的
orderBy('created_at','desc')可以保留,作为页面初始加载时的默认排序逻辑,和点击链接后的默认方向保持一致。 - 额外优化建议:控制器中的
$company_total = User::all();如果只是为了获取用户总数,改成$company_total = User::count();更高效,避免加载所有用户数据占用不必要的资源。
内容的提问来源于stack exchange,提问作者yamaguchi takumi
相关产品推荐
相关产品推荐

