Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 5.4获取相关数据并显示_Php_Laravel_Laravel 5 - Fatal编程技术网

Php Laravel 5.4获取相关数据并显示

Php Laravel 5.4获取相关数据并显示,php,laravel,laravel-5,Php,Laravel,Laravel 5,我用它作为我项目的起点 我有一个用户表和俱乐部表用户可以有一个俱乐部,俱乐部附加到一个用户 所以我在clubs表中定义了hasOne关系,如下所示 public function user() { return $this->hasOne(User::class, 'id', 'user_id'); } 俱乐部表中有用户id列 我无法在我的索引页面上获得正确的数据来显示用户的用户名 我正在使用ClubsRepository显示数据 下面是它的代码 public function

我用它作为我项目的起点

我有一个
用户
表和
俱乐部
表<代码>用户可以有一个俱乐部,
俱乐部
附加到一个
用户

所以我在
clubs
表中定义了
hasOne
关系,如下所示

public function user()
{
    return $this->hasOne(User::class, 'id', 'user_id');
}
俱乐部
表中有
用户id

我无法在我的
索引
页面上获得正确的数据来显示
用户的
用户名

我正在使用
ClubsRepository
显示数据

下面是它的代码

public function __invoke(ManageClubRequest $request)
{
    return Datatables::of($this->clubs->getForDataTable())
        ->escapeColumns(['clubName', 'sort'])
        ->addColumn('user', function ($clubs) {
            return $clubs->user->pluck('first_name');
        })
        ->addColumn('actions', function ($clubs) {
            return $clubs->action_buttons;
        })
        ->withTrashed()
        ->make(true);
}
下面的存储库中是我的“getFromDataTable()”方法

我的
索引。刀片
代码如下

<table id="clubs-table" class="table">
   <tr>
       <th>clubName</th>
       <th>description</th>
       <th>userName</th>
       <th>created</th>
       <th>last_updated</th>          
  </tr>
 </table>

<script>
  $(function () {
        $('#clubs-table').DataTable({
            dom: 'lfrtip',
            processing: false,
            serverSide: true,
            autoWidth: false,
            ajax: {
                url: '{{ route("admin.access.clubs.get") }}',
                type: 'post',
                data: {status: 1, trashed: false},
                error: function (xhr, err) {
                    if (err === 'parsererror')
                        console.log(err);
                }
            },
            columns: [
                {data: 'clubName', name: 'clubs.clubName'},
                {data: 'description', name: 'clubs.description'},
                {data: 'user', name: 'user.first_name', sortable:false},
                {data: 'created_at', name: 'clubs.created_at'},
                {data: 'updated_at', name: 'clubs.updated_at'}
            ],
        });
    });
</script>

俱乐部名称
描述
用户名
创建
上次更新
$(函数(){
$(“#俱乐部表”)。数据表({
dom:'lfrtip',
处理:假,
服务器端:是的,
自动宽度:false,
阿贾克斯:{
url:“{route(“admin.access.clubs.get”)}”,
键入:“post”,
数据:{状态:1,垃圾:false},
错误:函数(xhr,err){
如果(错误=='parsererror')
控制台日志(err);
}
},
栏目:[
{数据:'clubName',名称:'clubs.clubName'},
{数据:'description',名称:'clubs.description'},
{data:'user',name:'user.first_name',sortable:false},
{data:'created_at',name:'clubs.created_at'},
{数据:'updated_at',name:'clubs.updated_at'}
],
});
});

我做错了什么?

尝试此查询以获取用户的俱乐部数据

   User::with(array('clubs' => function($q) {
     }))->get();

看起来您使用了错误的关系类型-如果clubs表有一个user\u id列,这意味着它
属于用户,而不是它
有一个用户

假设每个用户可以有多个俱乐部,那么您需要的是

// in the User model
public function clubs()
{
    return $this->hasMany(Club::class);
}

// in the Clubs model
public function user()
{
    return $this->belongsTo(User::class);
}

此外,我不熟悉datatables,但值得注意的是,您实际上并没有在
getForDataTable()
方法中执行查询。它缺少
->get()
或类似代码。还有一个问题是,
$this->query()
似乎不是最有效的方法,但很难确定

在这方面:

return Datatables::of($this->clubs->getForDataTable())

这些俱乐部是多个俱乐部的集合吗?因为你不能对一组对象调用模型方法。

@AaronFahey试过了,但不起作用。我试过了,现在它将所有用户的名字显示为数组。我更新了一些-如果不起作用,你能更具体地描述一下
$this->clubs
是什么吗,你想叫什么?
return Datatables::of($this->clubs->getForDataTable())