如何检查用户是否正在对数据 table 中的 table 列进行排序

How to check if user is sorting table's column in datatables

我在 Laravel 8 上使用 yajra 的数据table,试图在服务器端实现“默认排序”。它已经在工作,但我正在尝试寻找其他解决方案,因为实施感觉有点老套。

我的控制器中有这样的东西:

$myData = new MyData;

if ($request->order[0]['column'] === '0') {
    $myData->orderBy('priority');
}

return DataTables::of($myData)->make(true);

请注意if ($request->order[0]['column'] === '0')部分。这里的想法是,如果 table 是第一次启动,别名用户没有自己进行任何列排序,那么数据应该按照 if 语句中定义的任何内容排序。 datatables本身没有定义order属性,因此默认给0列排序。

我正在从服务器端进行排序,因为它有点复杂并且从服务器而不是数据tables 更容易完成。再一次,上面的代码是有效的,但我只是觉得这有点 hacky。我可以使用其他替代方法吗?我应该更改代码,还是这样可以?

因此,在前面的 blade 代码中,将此添加到您的函数中以填充数据表...

order: [],

这将告诉数据表不要对数据进行任何排序,并使用您提供的数据作为第一个排序顺序。基本上给它一个空数组。 然后你就可以完全摆脱这种情况。然后像往常一样对您的数据进行排序 eloquent collection 您正在制作以填充所述数据表。 这是相关文档: https://datatables.net/reference/option/order