【发布时间】:2018-03-04 11:12:35
【问题描述】:
我有一个用复杂的 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
})...
【问题讨论】:
-
您是否正在为 Friend 模型编制索引并且要为此查询创建单独的索引?
标签: php mysql laravel search algolia