Les valeurs de la colonne id
sont fausses lorsque le id
n'est pas demandé du côté javascript.
Le problème n'apparaît que lorsque je ne mentionne pas la colonne id
dans le paramètre 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' },
...
]
})
Du côté PHP, j'ai quelque chose comme ça
$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);
La valeur de id
sera users.id
au lieu de students.id
Je pense que c'est un bogue dans le framework laravel et le travail pour résoudre ce problème consiste à ajouter select('students.*')
à votre requête, comme documenté ici .
$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);
Merci, ça marche bien maintenant
@yajra , votre réponse m'a aidé, merci. Il vaudrait mieux que vous supprimiez le commentaire, car dans votre exemple, ce devrait être le contraire. Il contiendra la valeur correcte.
Merci
Commentaire le plus utile
Je pense que c'est un bogue dans le framework laravel et le travail pour résoudre ce problème consiste à ajouter
select('students.*')
à votre requête, comme documenté ici .