Laravel 具有多个字段的Algolia搜索(Scout)

Laravel 具有多个字段的Algolia搜索(Scout),laravel,algolia,Laravel,Algolia,比如说,我想为一家拥有多个办公室的大公司创建一个电话簿。 我的数据库由3个表组成: -使用者 -城市代表办公室的位置 -角色一个用户可以有多个角色 我想创建一个包含3个不同字段的表单来执行查询,我该怎么做 现在我只有一个字段,这是我的主要模型用户 ``` ``` 您将如何使用Algolia进行研究,并向查询城市和角色添加过滤器 我应该如何存储角色?纯文本 感谢您where子句中的仅搜索支持号码: 我建议还存储办公室的ID,并进行如下搜索: User::search('')->where('

比如说,我想为一家拥有多个办公室的大公司创建一个电话簿。 我的数据库由3个表组成: -使用者 -城市代表办公室的位置 -角色一个用户可以有多个角色

我想创建一个包含3个不同字段的表单来执行查询,我该怎么做

现在我只有一个字段,这是我的主要模型用户

```

```

您将如何使用Algolia进行研究,并向查询城市和角色添加过滤器

我应该如何存储角色?纯文本


感谢您

where子句中的仅搜索支持号码:

我建议还存储办公室的ID,并进行如下搜索:

User::search('')->where('office_id', 2)->get();
对于角色,因为您有多个值,所以应该将它们存储为数组。 不能在数组中使用where,因此需要利用callback参数在options数组中添加过滤器项

User::search('', function ($algolia, $query, $options) {
    $options = array_merge($options, [
        'filters' => 'roles:engineer'
    ]);

    return $algolia->search($query, $options);
})->get();
你可以在这里找到Algolia关于过滤的文档:


请让我知道这是否对您有效。

仅支持where子句中的数字:

我建议还存储办公室的ID,并进行如下搜索:

User::search('')->where('office_id', 2)->get();
对于角色,因为您有多个值,所以应该将它们存储为数组。 不能在数组中使用where,因此需要利用callback参数在options数组中添加过滤器项

User::search('', function ($algolia, $query, $options) {
    $options = array_merge($options, [
        'filters' => 'roles:engineer'
    ]);

    return $algolia->search($query, $options);
})->get();
你可以在这里找到Algolia关于过滤的文档:

请让我知道这是否对你有效