如何在Scout Extended的customRanking中使用枚举字段?
Laravel Scout Extended中枚举字段用于customRanking的可行方案
可以将这个存储整数字符串的枚举字段用于customRanking,但需要确保Algolia索引中该字段被识别为数值类型,具体操作如下:
在模型中转换字段类型
在对应模型的toSearchableArray方法里,把枚举字段转为整数后再同步到Algolia。假设你的枚举字段名为priority,代码示例:public function toSearchableArray() { $array = $this->toArray(); // 将枚举字符串转为整数 $array['priority'] = (int)$this->priority; return $array; }重新同步数据到Algolia
由于之前同步的是字符串类型数据,需要执行命令重新导入数据,确保Algolia识别字段为数值:php artisan scout:import "App\Models\YourModel"后续新增或更新的数据会自动按转换后的整数同步。
配置customRanking规则
完成上述步骤后,就可以像普通数值字段一样在config/scout.php中配置排序规则:'customRanking' => [ 'desc(priority)', 'desc(completed_at)', 'desc(created_at)', ],
这种方式不需要修改数据库的枚举字段类型,完全兼容已有业务数据,同时满足Algolia customRanking对数值类型的要求。
内容的提问来源于stack exchange,提问作者Petro Gromovo
相关产品推荐
相关产品推荐

