无法在laravel数据表上添加的列上排序

时间:2019-07-29 15:56:32

标签: laravel-datatables

我正在对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额外列时,返回的记录数是正确的,但是表给出了“找不到匹配的记录”。我不知道可能是什么问题?

1 个答案:

答案 0 :(得分:0)

在laravel控制器中,我将表的列列表放入会话变量。之后,该表的排序停止工作。 也许与绑定集合不可变数组有关。 然后,我只是复制了该列表的对象,然后排序又开始工作了。