我正在对laravel 5.4和yajra数据表使用服务器端处理(用于大量数据集),但无法对添加到表视图中的列执行排序。
我的表架构如下:
库存表:id(pk),名称,符号
例如
123,苹果,apl
stockfa表:id,stock_id(fk),鱼卵,日期
例如
1,123,15,01/01/2007
2,123,16,01/01/2008
...
13,123,17,01/01/2019
我想要一个具有排序的数据表,如下所示:
ID,名称(排序),符号, latest_roe (排序)
我的laravel控制器代码如下:
$stocks = Stock::whereIn('id', $idListArry)->select('stocks.*')
->addSelect(
DB::raw('(SELECT stockfa.roe FROM stockfa, stocks WHERE stocks.id = stockfa.stock_id and stockfa.date = (SELECT MAX(date) FROM stockfa where stocks.id=stockfa.stock_id)) as latestroe')
);
$stockListDatatable = Datatables::of($stocks)
->setTotalRecords($stocks->count())
->addColumn('latestroe', function ($stock) {
return round($stock->latestroe,1);
})
...
->make(true);
return $stockListDatatable;
我的视图刀片JavaScript如下:
$(function() {
$('#stocks-table').DataTable({
pageLength: 50,
order: [ 0, 'asc' ],
responsive : true,
processing: true,
serverSide: true,
....
columns: [
{ data: 'id', name: 'id',orderable: false },
{ data: 'name', name: 'name',orderable: true },
{ data: 'symbol', name: 'symbol',orderable: true },
{ data: 'latestroe',name: 'latestroe',orderable: true,sortable : true },
],
如果我没有其他“ latest_roe”列,则一切正常。但是,当我添加了last_roe额外列时,返回的记录数是正确的,但是表给出了“找不到匹配的记录”。我不知道可能是什么问题?
答案 0 :(得分:0)
在laravel控制器中,我将表的列列表放入会话变量。之后,该表的排序停止工作。 也许与绑定集合不可变数组有关。 然后,我只是复制了该列表的对象,然后排序又开始工作了。