Значения столбца id
неверны, если id
не запрашивается со стороны javascript.
Проблема возникает только тогда, когда я не упоминаю столбец id
в параметре dataTables columns
.
$('#table').DataTable({
columns: [
{ data: 'id', name: 'id' }, // ----> Problem appear when i don't mention this column in javascript
{ data: 'user.first_name', name: 'user.first_name' },
...
]
})
На стороне PHP у меня что-то вроде этого
$students = Student::with(['user', ...]);
return Datatables::of($students)
->addColumn('actions', function ($row)
{
$row->id // ----> Will contain wrong value, it will contain users.id instead of students.id
return $actions;
})
->make(true);
Значение id
будет users.id
вместо students.id
Я думаю, что это ошибка в фреймворке laravel, и чтобы исправить это, нужно добавить select('students.*')
в ваш запрос, как описано здесь .
$students = Student::with(['user', ...])->select('students.*');
return Datatables::of($students)
->addColumn('actions', function ($row)
{
$row->id // ----> Will contain wrong value, it will contain users.id instead of students.id
return $actions;
})
->make(true);
Спасибо, теперь все работает нормально
@yajra , ваш ответ мне помог, спасибо. Было бы лучше, если бы вы удалили комментарий, поскольку в вашем примере все должно быть наоборот. Он будет содержать правильное значение.
Спасибо
Самый полезный комментарий
Я думаю, что это ошибка в фреймворке laravel, и чтобы исправить это, нужно добавить
select('students.*')
в ваш запрос, как описано здесь .