2017-01-15 16 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

助けてくれてありがとう。 \\ 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が今の結果になります。

このページのデータは...詳細はこちら。 https://gist.github.com/Artistan/fea3e21f149fdf845e530299bcff37d4

+0

あなたのメソッドはページングされた結果の代わりにコレクションを返します。 –

+0

@AndriusSolopovas - 詳細はこちら https://gist.github.com/Artistan/fea3e21f149fdf845e530299bcff37d4 – Artistan