在Algolia上自定义查询结果集合的搜索 - Laravel

问题描述:

我有用复杂的laravel查询创建的集合,并且此查询的结果太大。所以我认为我必须使用algolia。据我所知,algolia将json作为模型表格数据自身并从那里投放。在Algolia上自定义查询结果集合的搜索 - Laravel

$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 
     })... 
+0

您是否编制了Friend模型的索引,并且希望为此查询创建单独的索引? –

我认为最好的办法是使用这个请求,并链searchable()方法。它会将查询返回的集合索引到Algolia。

$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)); 

    }) 
    ->searchable(); 
+0

感谢您的回答。当我尝试成功时,我会回到你身边。 – fthopkins

+0

不要犹豫,以标志我的答案,如果这对你有用;) –