Laravel 数据表在添加额外列时出现 net::ERR_EMPTY_RESPONSE 错误

我在 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 有响应)但是如果我删除两列然后它工作正常。



小唯快跑啊
浏览 101回答 1
1回答

慕容森

Yajra\Datatables 是我个人更喜欢使用原始 sql 的领域之一。根据您的上述要求,我会这样看$data = DB::select("Select&nbsp; a.id as 'users.id',&nbsp; a.name as 'users.name',&nbsp; b.id as 'group.id',&nbsp; b.name as 'group.name',&nbsp; a.created_at as 'users.created_at',&nbsp; a.email as 'users.email'FROM&nbsp; users as aLEFT JOIN&nbsp;&nbsp; groups as bON&nbsp; a.group_id = b.id");$data = Datatables::of($data)->make(true);return $data;然后在数据表初始化代码的列部分中,只需使用“users.id”、“users.name”等(与名称字段相同)更新数据。Yajra 很棒,但我遇到了一些问题并雄辩地表达了自己。因此,为什么我只是回到原始 sql,从那以后就没有问题了。编辑 - 使用新数据:然后我建议您发布已加载到相关服务器的 .env 文件。您是在本地执行所有这些操作,还是有一个单独的服务器出现问题?
打开App,查看更多内容
随时随地看视频慕课网APP