我有一个User
可以分配给多个Company
。我正在尝试使用Laravel Datatables和jQuery Datatables渲染表格。它呈现得很好,当在表头点击排序图标时,它会按该列对数据进行排序,但是,对于关系列company_name
,它不起作用。
这是我的控制器中的代码:
$users = User::with(['roles','companies'])
->where('users.id', '!=', Auth::id())
->whereHas('roles', function($q){$q->whereId(Role::ROLE_6);});
...
return Datatables::of($users)
->editColumn('company', function (User $user) {
return $user->hasCompanies()? $user->companies->first()->company_name : trans('lang.company.not_assigned');
})
->orderColumn('company', 'company')
->make(true);
以下是我的datatables的javascript代码:
otable = $('#datatable_fixed').DataTable({
"ajax": {
url: 'users/datatable',
type: 'POST',
},
"pageLength": 15,
"processing": true,
"stateSave": true,
"serverSide": true,
"bDestroy": true,
columns: [
{data: 'first_name', name: 'first_name'},
{data: 'last_name', name: 'last_name'},
{data: 'company', name: 'company.company_name'},
{data: 'email', name: 'email'},
{data: 'status', name: 'status'},
],
dom: 'Bfrtip',
searching: false,
"order": [[0, 'asc']],
"autoWidth": true,
});
->select('expenses.*')
也会导致N+1问题,这将导致相同的数据多次显示,这个问题在这个评论中也提到了,https://github.com/yajra/laravel-datatables/issues/2623#issuecomment-827327299 - CodingEra