我使用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
我在这里做错了什么?
答案 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()
俱乐部是多个俱乐部的集合吗?因为你无法在一组对象上调用模型方法。