一個值,我有了這個查詢在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);
希望這有助於!
我認爲你不能使用這種渴望加載。 –