我在laravel版本var
上使用Yajra datatable软件包。
在使用旧版本之前,我使用8.0
根据特定列对数据进行排序。
但是在较新版本中,建议使用->orderBy('created_at', 'desc')
方法进行排序。但这对我不起作用。
假设我要对字段orderColumn
上的所有Post
进行排序。为此我写了这个:
created_at
如您所见,我使用了$posts =
Post::select(['post_id', 'post_title', 'start_date', 'end_date', 'picture', 'active', 'created_at', 'deleted_at']);
if ($request->has('showDeleted') && $request->get('showDeleted') == 1) {
$posts = $posts->withTrashed();
}
$datatable = app('datatables')->of($posts)
->orderColumn('created_at', '-created_at $1');
return $datatable->make(true);
,但痛处不起作用。而且但是我不知道如何正确使用它。
答案 0 :(得分:0)
只需使用
->orderBy('tableName.columnName', 'DESC');
答案 1 :(得分:0)
也许迟到了,但这还需要一个答案。
orderColumn function description here
“在某些情况下,您可能希望对特定列使用自定义顺序sql”,这意味着该函数不适用于正常情况。 通常情况下,当您想按表的某个字段进行排序时,只需单击该字段的列名,该订单就会自动运行,无需执行任何其他操作。您的案子只有正常顺序。无需使用orderColumn函数。
如果要使用orderColumn函数。这是使用方法:
这不会在第一次加载数据表时运行,必须单击表列名(updated_at)使其执行Order查询。
如果您想通过Updated_at设置默认订单:
$html = $htmlBuilder
->parameters([
'order' => [5, 'asc'] // here is the updated_at column number
])
->addColumn([
'data' => 'id',
'name' => 'id',
'title' => 'id',
])
->addColumn([
'data' => 'start_date',
'name' => 'start_date',
'title' => 'start_date',
])
->addColumn([
'data' => 'end_date',
'name' => 'end_date',
'title' => 'end_date',
])
->addColumn([
'data' => 'picture',
'name' => 'picture',
'title' => 'picture',
])
->addColumn([
'data' => 'active',
'name' => 'active',
'title' => 'active',
])
->addColumn([
'data' => 'created_at',
'name' => 'created_at',
'title' => 'created_at,
])
->addColumn([
'data' => 'deleted_at',
'name' => 'deleted_at',
'title' => 'deleted_at',
]);
return view('path.to.view', compact('html'));