Laravel-datatables: Valeur de colonne d'ID incorrecte

Créé le 9 déc. 2016  ·  3Commentaires  ·  Source: yajra/laravel-datatables

Résumé du problème ou de la demande de fonctionnalité

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

Détails du système

  • Système opérateur
  • Version PHP: 5.6
  • Version 5.3.26 de Laravel
  • Laravel-Datatables 6.22.5
documentation question

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 .

$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);

Tous les 3 commentaires

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

Cette page vous a été utile?
0 / 5 - 0 notes