关系中的 Laravel 侦察搜索

Lok*_*oko 5 php mysql laravel laravel-scout

我似乎无法弄清楚如何在 Laravel scout 中的 1 个查询中的 2 个表中进行搜索。出于目前不重要的特定原因,我不想只运行原始查询。现在我有这个要搜索:

我的关系:

namespace App;
use Laravel\Scout\Searchable;
class Users extends Model
{
    use Searchable;
   public function searchableAs(){
      return 'users_index';
   }
   public function toSearchableArray(){
      return $this->toArray();
   }
   public function originalUser(){
      return $this->belongsTo(OriginalUser::class);
   }
}
Run Code Online (Sandbox Code Playgroud)

这是控制器:

use App\OriginalUser;
use App\Users;
use App\Groups;

class SomeController extends Controller{

   public function index(){
     $group = Group::where('group_id',1)->first();
     return Users::search('something')->where('group_id',$group->id)->get();
   }
}
Run Code Online (Sandbox Code Playgroud)

现在这将返回在其中一列中具有“某物”的用户,如下所示:

   [
      {
        "id": "1",
        "original_user_id": "1",
        "username": "something"
        "original_user": {
          "id": "1",
          "username":"test"
        }
      }
    ]
Run Code Online (Sandbox Code Playgroud)

但我需要我的代码也返回这条记录:

   [
      {
        "id": "2",
        "original_user_id": "2",
        "username": "nope"
        "original_user": {
          "id": "2",
          "username": "something"
        }
      }
    ]
Run Code Online (Sandbox Code Playgroud)

因此,当它与结果的关系匹配时,我也希望返回该记录。我也尝试制作OriginalUser模型searchable,但我只是停留在这一点上。

文档是不够清晰,我找出如何真正得到我们的关系列将匹配搜索值以及结果。我发现的唯一关于官方文档中模型中关系的内容是:

// You may also add records via relationships...
$user->orders()->searchable();
Run Code Online (Sandbox Code Playgroud)

我试过,但它并没有告诉我其他记录。(当然,我改变了ordersoriginalUser()我的代码)

有谁知道如何使用 laravel scout 在 1 个“搜索”中搜索多个模型?

编辑: 我没有使用 Algolia,而是使用 mysql。

Orc*_*his 3

不幸的是,目前使用 Scout 和 MySQL 驱动程序似乎无法实现这一点。

今天我自己寻找完全相同问题的解决方案,我发现了一些建议,通过 toSearchableArray 方法在您想要搜索的模型上添加关系可能会做到这一点:https ://laracasts.com/discuss/channels/laravel/scout -如何搜索关系和计数?page=1#reply=329201

但这对我不起作用,因为 toSearchableArray 负责将潜在的搜索结果放入像 Algolia 这样的索引中,而 MySql 驱动程序不会这样做。几个小时后,我在该主题的存储库上发现了 2016 年的一个问题,这表明他们还没有时间实现这个:https ://github.com/yabhq/laravel-scout-mysql-driver/issues /5