2017-01-15 20 views
1

目前我使用Laravel偵察員搜索我的整個網站。所以,當有人搜索一條消息,我回來了這個:Laravel偵察員懶惰加載

public function messages($search) 
{ 
    return Message::search($search)->paginate(4); 
} 

但現在我要發送相關的論壇aswel。已經試過這個:

public function messages($search) 
{ 
    return Message::search($search)->load('forum')->paginate(4); 
} 

這是行不通的。我怎麼能這樣做?

回答

1

我現在只能給你這個解決方法。您可以手動加載論壇數據:

$messages = Message::search($search)->paginate(4); 
$forums = Forum::whereIn('id', $messages->pluck('id'))->get(); 

return compact('messages', 'forums'); // Return an array of messages and related forums. 
+0

這將拋出一個異常:'''調用未定義的方法Laravel \ Scout \ Builder :: with()''' – Jamie

+0

感謝您的幫助。它再次拋出一個錯誤:'''調用未定義的方法Illuminate \ Database \ Query \ Builder :: search()''' – Jamie

+0

@Jamie現在我無法給你更好的解決方案,但我添加了一些解決方法。 'Forum'部分代碼與'Message'和'Forum'模型之間的關係類型有關。 –

0

解決方案:

$message = Message::search($query)->paginate(25); 
// while this returns a Collection, it also updates the $message Paginator. 
$message->load('forum'); 

$message將是現在的結果。

您可以在paginator上獲得數據...更多詳情。 https://gist.github.com/Artistan/fea3e21f149fdf845e530299bcff37d4

+0

您的方法返回集合而不是分頁結果。 –

+0

@AndriusSolopovas - 詳情在這裏.. https://gist.github.com/Artistan/fea3e21f149fdf845e530299bcff37d4 – Artistan