如何为Laravel Backpack列表设置默认排序列?全局排序scope不生效怎么办
问题原因
你写的Laravel全局作用域不生效,核心原因是Laravel Backpack 的CRUD列表默认会在查询末尾追加默认排序规则:如果你没有手动指定排序,Backpack默认会按模型主键id倒序排列,查询构造器中后追加的orderBy优先级高于你在全局作用域中提前定义的排序规则,因此全局作用域的排序被覆盖,不会生效。
正确设置Laravel Backpack列表默认排序的方法
方法1:直接在CRUD控制器中设置(最常用)
在对应CRUD控制器的setup()方法中直接调用Backpack提供的排序方法即可,优先级高于默认的主键排序:
public function setup() { // 其他原有配置 $this->crud->orderBy('descrizione', 'asc'); }
该方法不会影响模型在其他非Backpack场景下的查询,是官方推荐的默认排序设置方式。
方法2:保留全局作用域,禁用Backpack默认排序
如果你希望模型在所有场景(包括非Backpack的业务查询)都遵循该排序规则,可以保留原有的全局作用域,只需要在CRUD控制器中移除Backpack的默认排序规则即可:
public function setup() { // 其他原有配置 $this->crud->removeDefaultOrder(); }
此时全局作用域中定义的排序就会正常生效。
内容的提问来源于stack exchange,提问作者realtebo
相关产品推荐
相关产品推荐

