php - 使用 Algolia 搜索自定义查询结果集合 - Laravel

标签 php mysql laravel search algolia

我有使用复杂的 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
        })...

最佳答案

我相信最好的方法是使用此请求并链接 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();

关于php - 使用 Algolia 搜索自定义查询结果集合 - Laravel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46372068/

相关文章:

Laravel 4 - 使用包中的验证器进行验证

linux - 将 laravel 添加到路径(Linux Mint 18.2 sonya)

javascript - 使用 html 到 Canvas 、使用 JavaScript 和 php 时图像渲染模糊

java - 运行 : java. sql.SQLException:用户 'root' @'localhost' 的访问被拒绝(使用密码:NO)

php - 如何使用 PHP 和 MySQL 处理带链接的数据库信息更改?

mysql - 使用大量 NOT IN 语句优化查询

android - 无法使用 Retrofit 2 上传图像

php - 如何清除重复的 BB 标签

php - 重新创建从 SoapUI 到 PHP 的工作 SOAP 请求

php - SQLSTATE[HY000] [1698] 拒绝用户访问 'root' @'localhost'