Невозможно отсортировать по добавленному столбцу в datatable

Я использую обработку на стороне сервера (для большого количества набора данных) с laravel 5.4 и yajra datatable, но не могу выполнить сортировку для столбца, который добавляется в табличное представление.

Моя таблица схем выглядит следующим образом:

таблица запасов: id (pk), имя, символ
например
123, яблоко, апл

таблица 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", все работает нормально. Но когда я добавляю дополнительный столбец latest_roe, количество возвращаемых записей будет правильным, но в таблице будет указано "Соответствующие записи не найдены". У меня заканчиваются идеи, в чем может быть проблема?

2 ответа

В моем случае в контроллере laravel я помещаю список столбца таблицы в переменную сеанса. После этого сортировка таблицы перестала работать.
Возможно, это связано с привязкой неизменяемых массивов коллекции.
Затем я просто сделал объектную копию этого списка, и сортировка снова начала работать нормально.

В моем случае в контроллере laravel я помещаю список столбцов таблицы в переменную сеанса. После этого сортировка таблицы перестала работать. Возможно, это связано с привязкой неизменяемых массивов коллекций. Затем я просто сделал объектную копию этого списка, и сортировка снова начала работать нормально.

Другие вопросы по тегам