如何在 Backpack for Laravel 中添加 ListEntries table 的默认排序?
How to add a default ordering of ListEntries table in Backpack for Laravel?
当用户第一次访问该页面时,ListEntries
table 按 table header 中的排序图标的 id 和 none 升序排列] 活跃。
我希望 ListEntries
table 按我选择的列排序,包括激活此列旁边的图标(升序或降序)。
有没有办法让 ListEntries
table 在用户访问页面时按我选择的列排序?
在控制器的 setup()
方法中,您可以使用:
$this->crud->orderBy('name', 'DESC');
您传递给 orderBy()
语句的任何内容都将用于 Eloquent 查询。
默认情况下,真实属性的列(在数据库中有相应的列)应该是 orderable
。但您也可以手动为列指定 'orderable' => true
,或 define your own order logic。请注意,关系列 (1-n, n-n)、model_function
或 model_function
列在默认情况下不可订购,但您 可以 使它们可订购 orderLogic
.
希望对您有所帮助。
这可以通过操纵请求对象来完成,这在某些圈子中可能不受欢迎。
此解决方案还将更新相应列上的订单图标。
有多种方法可以实现此目的,但一种方法是将以下内容添加到控制器的 setupListOperation()
方法中。
/** @var \Illuminate\Http\Request $request */
$request = $this->crud->getRequest();
if (!$request->has('order')) {
$request->merge(['order' => [
[
'column' => 'column-index-here',
'dir' => 'asc'
]
]]);
}
使用这个键orderable
它是一个布尔值
this->crud->addColumn([
'label' => 'Category',
'type' => 'select',
'name' => 'category_id', // the db column for the foreign key
'entity' => 'category', // the method that defines the relationship in your Model
'attribute' => 'name', // foreign key attribute that is shown to user
'orderable' => true,
'orderLogic' => function ($query, $column, $columnDirection) {
return $query->leftJoin('categories', 'categories.id', '=', 'articles.select')
->orderBy('categories.name', $columnDirection)->select('articles.*');
}
]);
当用户第一次访问该页面时,ListEntries
table 按 table header 中的排序图标的 id 和 none 升序排列] 活跃。
我希望 ListEntries
table 按我选择的列排序,包括激活此列旁边的图标(升序或降序)。
有没有办法让 ListEntries
table 在用户访问页面时按我选择的列排序?
在控制器的 setup()
方法中,您可以使用:
$this->crud->orderBy('name', 'DESC');
您传递给 orderBy()
语句的任何内容都将用于 Eloquent 查询。
默认情况下,真实属性的列(在数据库中有相应的列)应该是 orderable
。但您也可以手动为列指定 'orderable' => true
,或 define your own order logic。请注意,关系列 (1-n, n-n)、model_function
或 model_function
列在默认情况下不可订购,但您 可以 使它们可订购 orderLogic
.
希望对您有所帮助。
这可以通过操纵请求对象来完成,这在某些圈子中可能不受欢迎。
此解决方案还将更新相应列上的订单图标。
有多种方法可以实现此目的,但一种方法是将以下内容添加到控制器的 setupListOperation()
方法中。
/** @var \Illuminate\Http\Request $request */
$request = $this->crud->getRequest();
if (!$request->has('order')) {
$request->merge(['order' => [
[
'column' => 'column-index-here',
'dir' => 'asc'
]
]]);
}
使用这个键orderable
它是一个布尔值
this->crud->addColumn([
'label' => 'Category',
'type' => 'select',
'name' => 'category_id', // the db column for the foreign key
'entity' => 'category', // the method that defines the relationship in your Model
'attribute' => 'name', // foreign key attribute that is shown to user
'orderable' => true,
'orderLogic' => function ($query, $column, $columnDirection) {
return $query->leftJoin('categories', 'categories.id', '=', 'articles.select')
->orderBy('categories.name', $columnDirection)->select('articles.*');
}
]);