如果未从JavaScript端请求id
,则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
将是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.*')
,如此处所述。