一个值,我有了这个查询在Laravel多数民众赞成返回所有论坛上一些额外的信息:Laravel得到渴望负荷
return Forum::with(['messages.user' => function($query){
$query->select('id', 'name');
}])->withCount('messages')->paginate(10);
但现在它急于加载所有相关的消息,以及,但我只需要作者从消息。我怎么能得到这个结果?
一个值,我有了这个查询在Laravel多数民众赞成返回所有论坛上一些额外的信息:Laravel得到渴望负荷
return Forum::with(['messages.user' => function($query){
$query->select('id', 'name');
}])->withCount('messages')->paginate(10);
但现在它急于加载所有相关的消息,以及,但我只需要作者从消息。我怎么能得到这个结果?
没有预先加载,
//特定论坛
//获取一个论坛,实体
$forum = Forum::find($id);
//获取其信息作为一个集合
$forumMessages = $forum->messages;
//遍历集合上的每条消息以查找其作者。这将根据您在消息表中存储的'author_id'在User模型中查找id。集合$ forumMessages现在将具有作者的名称。这只是给你一个想法。根据您的需求结构。
$forumMessages->each(function ($message){
$message->author = User::find($message->author_id)->name;
});
尝试使用
return Forum::with([
'messages' => function ($messages) {
return $messages->with([
'user' => function ($user) {
return $user->select('id', 'name');
}
])->select('id', 'author'); // you get author from messages
}
])->withCount('messages')->paginate(10);
这也渴望加载,但你只能得到id
和author
。需要id
才能与用户建立关系。
假设你有你的Message
模型中的表是messages
,它具有列forum_id
和user_id
,并表为您User
模式users
你可以只定义一个belongsToMany
并获得信息的方式:
public function users()
{
return $this->belongsToMany(User::class, 'messages')->distinct();
}
则:
return Forum::with(['users' => function($query){
$query->select('users.id', 'users.name');
}])->withCount('messages')->paginate(10);
希望这有助于!
我认为你不能使用这种渴望加载。 –