Scout Laravel Algolia search too 查询

Posted

技术标签:

【中文标题】Scout Laravel Algolia search too 查询【英文标题】:Scout Laravel Algolia search too queries 【发布时间】:2022-01-14 06:17:11 【问题描述】:

我正在使用 Laravel scout 和 Algolia 搜索。

我有这种雄辩的关系:

public function doctors()

    return $this->belongsTo(Doctor::class, 'doctor_id');

在这里我通过 Algolia 搜索得到结果:

  $doctors = DoctorInfo::search($this->search)
                                ->with([
                                'typoTolerance' => true,
  ])
  ->paginate(10);

我收到很多单个查询:

select * from `doctors` where `doctors`.`id` = 131 limit 1
select * from `doctors` where `doctors`.`id` = 141 limit 1
select * from `doctors` where `doctors`.`id` = 191 limit 1
....

我怎样才能使用“whereIn”而不是“where”来获得一个有说服力的关系?

谢谢大家!

【问题讨论】:

【参考方案1】:

这样解决了。

$doctors = DoctorInfo::search($this->search)
                                ->with([
                                'typoTolerance' => true,
  ])
   ->query(function ($builder) 
            $builder->with('doctors');
  )
  ->paginate(10);

我的查询现在是独一无二的:

select * from `doctors` where `doctors`.`id` in (12, 88, 107, 108, 111, 131, 168, 170, 175, 181)

谢谢大家。

【讨论】:

以上是关于Scout Laravel Algolia search too 查询的主要内容,如果未能解决你的问题,请参考以下文章

laravel 的 scout elasticsearch ik laravel-scout-elastic 之间的关系与安装

Algolia:在 Laravel 中搜索多个索引

Laravel scout elastic-scout-driver 返回空响应

Laravel/Scout - 如何获取文档总数?

Laravel 基于 Scout 配置实现 Elasticsearch

如何连接 Algolia 和 @material-ui