我在 Laravel 7 中使用 DataTable 1.10.21。我正在尝试填充所有用户数据,除了我的用户表有一个名为 group_id 的附加列,它定义了用户组(即管理员、经理、用户等)现在我的用户模型有这种关系:public function group() { return $this->belongsTo(Group::class); } 当我打电话App\User::select(*)->with('group')->get();我会得到这样的好东西:App\User {#105150 id: 1, group_id: 1, name: "Admin", email: "admin@admin.com", email_verified_at: "2020-01-01 01:01:01", ... deleted_at: null, group: App\Group {#105096 id: 1, name: "admin", }, } ...在我的 UserController 中,我有这个功能:public function datatable() { $data = User::select("*")->with('group'); $dt = Datatables::of($data)->make(true); \Log::debug($dt); //this works!! return $dt; }我可以使用 tinker 毫无问题地获取 $data 和 $dt。我的视图包含以下 javascript:$(function() { $('#table').DataTable({ processing: true, serverSide: true, ajax: '{{ url('user/datatable') }}', columns: [ { data: 'id', name: 'id' }, { data: 'name', name: 'name' }, { data: 'group_id', name: 'group_id' }, /* this won't work */ { data: 'group.name', name: 'group.name' }, /* this won't work either */ { data: 'created_at', name: 'created_at' }, { data: 'email', name: 'email' } ] }); });<table class="table table-bordered" id="table"> <thead> <tr> <th>ID</th> <th>Name</th> <th>Group ID</th> <th>Group Name</th> <th>Creation Date</th> <th>Email</th> </tr> </thead> </table>group_id 或 group.name col 都不起作用。(net::ERR_EMPTY_RESPONSE 错误甚至 $dt 有响应)但是如果我删除两列然后它工作正常。
1 回答
慕容森
TA贡献1853条经验 获得超18个赞
Yajra\Datatables 是我个人更喜欢使用原始 sql 的领域之一。
根据您的上述要求,我会这样看
$data = DB::select("
Select
a.id as 'users.id',
a.name as 'users.name',
b.id as 'group.id',
b.name as 'group.name',
a.created_at as 'users.created_at',
a.email as 'users.email'
FROM
users as a
LEFT JOIN
groups as b
ON
a.group_id = b.id");
$data = Datatables::of($data)->make(true);
return $data;
然后在数据表初始化代码的列部分中,只需使用“users.id”、“users.name”等(与名称字段相同)更新数据。
Yajra 很棒,但我遇到了一些问题并雄辩地表达了自己。因此,为什么我只是回到原始 sql,从那以后就没有问题了。
编辑 - 使用新数据:然后我建议您发布已加载到相关服务器的 .env 文件。您是在本地执行所有这些操作,还是有一个单独的服务器出现问题?
- 1 回答
- 0 关注
- 100 浏览
添加回答
举报
0/150
提交
取消