Os valores da coluna id
estão errados quando id
não é solicitado do lado do javascript.
O problema só aparece quando não menciono a coluna id
na configuração 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' },
...
]
})
No lado do PHP, eu tenho algo assim
$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);
O valor de id
será users.id
vez de students.id
Eu acho que este é um bug no framework laravel e a solução para corrigir isso é adicionar select('students.*')
em sua consulta, conforme documentado aqui .
$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);
Obrigado, está funcionando bem agora
@yajra , sua resposta me ajudou, obrigado. Seria melhor se você removesse o comentário, já que em seu exemplo deveria ser o oposto. Ele conterá o valor correto.
obrigado
Comentários muito úteis
Eu acho que este é um bug no framework laravel e a solução para corrigir isso é adicionar
select('students.*')
em sua consulta, conforme documentado aqui .