Laravel 5.4获取相关数据并显示

时间:2017-07-18 07:06:44

标签: php laravel laravel-5

我使用this repo作为我项目的起点。

我有一个user表和clubs表。 User可以有一个分会,club分配给user

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

public function user()
{
    return $this->hasOne(User::class, 'id', 'user_id');
}

clubs表格有user_id列。

我无法在index页面上显示正确的数据,以显示userName的{​​{1}}。

我正在使用User来显示数据。

以下是代码。

ClubsRepository

在下面的存储库中是我的' getFromDataTable()'方法

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);
}

我的public function getForDataTable() { return $this->query() ->with('user') ->select([ 'clubs.id', 'clubs.clubName', 'clubs.description', 'clubs.user_id', 'clubs.created_at', 'clubs.updated_at', ]); } 代码位于

之下
index.blade

我在这里做错了什么?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

看起来你正在使用错误的关系 - 如果club表有user_id列,这意味着它是discussTask = function(taskId) { taskIdChat = taskId getChat() // initial call } var getChat = function() { taskId = taskIdChat payLoad = { 'task_id': taskIdChat, 'recent_message_id': recentMessageId } var xmlhttp = XHR('/chat/sync', 'POST', payLoad) xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState === 4) { buildChat(JSON.parse(xmlhttp.responseText)) setTimeout(getChat, 0) // Async recursive call } } } var XHR = function(action, method, payLoad) { var xmlhttp = new XMLHttpRequest() xmlhttp.open(method, action, true) xmlhttp.setRequestHeader('Content-Type', 'application/json;charset=UTF-8') xmlhttp.send(JSON.stringify(payLoad)) return xmlhttp } 用户,而不是belongs to用户。

假设每个用户都有多个俱乐部,你想要的是

has one

此外,我不熟悉数据表,但值得注意的一点是,您实际上并未在// in the User model public function clubs() { return $this->hasMany(Club::class); } // in the Clubs model public function user() { return $this->belongsTo(User::class); } 方法中执行查询。它缺少getForDataTable()或类似的。还有一个问题是->get()似乎不是做你正在尝试做的最有效的方式,但很难确定。< / p>

在这一行:

$this->query()

俱乐部是多个俱乐部的集合吗?因为你无法在一组对象上调用模型方法。