如果侦察兵和阿尔戈利亚阻止,Laravel会改用雄辩的搜索方式

时间:2019-11-19 21:35:14

标签: laravel algolia laravel-scout

我正在使用 Scout和Algolia 来创建我的搜索引擎并使用有限且免费的社区计划。

我想知道是否有一种方法可以使用WHERE LIKE切换到普通口才,如果 Scout或Algolia 订阅中出现问题?

2 个答案:

答案 0 :(得分:1)

是的,您可以使用普通查询在laravel中搜索结果。

ModelName::query()
   ->where('name', 'LIKE', "%{$searchTerm}%") 
   ->orWhere('email', 'LIKE', "%{$searchTerm}%") 
   ->get();

或者只需构建一个宏即可在laravel中搜索

https://freek.dev/1182-searching-models-using-a-where-like-query-in-laravel

答案 1 :(得分:1)

您可以使用后备装饰器装饰Algolia引擎,并在发生错误时切换到后备装饰。

class AppServiceProvider extends ServiceProvider
{
    /**
     * {@inheritdoc}
     */
    public function boot(): void
    {

        resolve(EngineManager::class)->extend(AppSearchEngine::class, function () {
            $origin = new AlgoliaEngine();
            $fallback = new MySQLEngine();
            return new FallbackEngine($origin, $fallback);
        });
    }
}

class FallbackEngine extends Engine {
...
    public function search(Builder $builder)
    {
        try {
            return $this->origin->search();
        } ($e \Excheption) {
            return $this->fallback->search();
        }
    }
...
}