Невозможно отсортировать по добавленному столбцу в 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 я помещаю список столбцов таблицы в переменную сеанса. После этого сортировка таблицы перестала работать. Возможно, это связано с привязкой неизменяемых массивов коллекций. Затем я просто сделал объектную копию этого списка, и сортировка снова начала работать нормально.