Laravel scout lazy loading

时间:2017-01-15 10:35:49

标签: php laravel

目前我正在使用Laravel scout搜索我的整个网站。因此,当有人搜索邮件时,我会将其返回:

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

但现在我要发送相关论坛aswel。已经尝试过这个:

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

这不起作用。我怎么能这样做?

3 个答案:

答案 0 :(得分: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.

答案 1 :(得分: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

答案 2 :(得分:0)

我在tntsearch中使用Laravel Scout,这就是我解决问题的方式。

$ids = Message::search($search)->keys()->toArray();
$messages = Message::with('forum')->whereIn('id', $ids)->get();