用于排序的orderColumn在yajra数据表上不起作用

时间:2018-07-13 19:06:35

标签: php laravel yajra-datatable

我在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); ,但痛处不起作用。而且但是我不知道如何正确使用它。

2 个答案:

答案 0 :(得分:0)

只需使用

->orderBy('tableName.columnName', 'DESC');

答案 1 :(得分:0)

也许迟到了,但这还需要一个答案。

orderColumn function description here

“在某些情况下,您可能希望对特定列使用自定义顺序sql”,这意味着该函数不适用于正常情况。 通常情况下,当您想按表的某个字段进行排序时,只需单击该字段的列名,该订单就会自动运行,无需执行任何其他操作。您的案子只有正常顺序。无需使用orderColumn函数。

如果要使用orderColumn函数。这是使用方法:

Example using 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'));