id
がJavaScript側から要求されていない場合、 id
列の値が間違っています。
この問題は、dataTables設定columns
のid
列について言及していない場合にのみ発生します。
$('#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
の値は、 students.id
ではなくusers.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.*')
を追加することです。