У меня есть коллекция, созданная с помощью сложного запроса laravel, и результат этого запроса слишком велик. Поэтому я думаю, что должен использовать algolia. Насколько я знаю, algolia получает данные таблицы модели как json
и обслуживает их оттуда.
$result = User::search("UserName")->get();
Это необходимо для некоторых конфигураций модели, таких как searchAs
и т. д., все они связаны с существующей моделью, и вы можете выполнить поиск по модели с помощью метода search
(пример выше). Я хочу спросить, у меня сложный запрос, и результат имеет слишком много атрибутов, которые поступают из других таблиц (объединенных). Я хочу выполнить поиск по моему пользовательскому результату запроса. Является ли это возможным ?
Мой пример запроса:
$friendShips = Friend::
join("vp_users as users","users.id","=","friendships.friendID")
->leftJoin("vp_friendships as friendshipsForFriend",function($join) use ($request)
{
$join->on("friendships.friendID","=","friendshipsForFriend.userID");
$join->on("friendshipsForFriend.friendID","=",DB::raw($request->userID));
})
->leftJoin("vp_videos_friends as videosFromFriendMedias",function($join)
{
$join->on("videosFromFriendMedias.userID","=","friendships.friendID");
$join->on("videosFromFriendMedias.friendID", "=" ,"friendships.userID");
$join->on("videosFromFriendMedias.isCalled", "=" , DB::raw(self::CALLED));
})
->leftJoin("vp_videos_friends as videosToFriendMedias",function($join)
{
$join->on("videosToFriendMedias.userID", '=', "friendships.userID");
$join->on("videosToFriendMedias.friendID", '=', "friendships.friendID");
$join->on(function($join){
$join->on("videosToFriendMedias.isCalled", '=', DB::raw(self::CALLED));
$join->orOn("videosToFriendMedias.isActive", '=', DB::raw(self::ACTIVE));
});
})
->leftJoin("vp_videos_friends as
//some join rules too
})...