Laravel 如果 Scout 和 Algolia 停止,切换到 eloquent 搜索

Laravel switch to eloquent search if Scout and Algolia stopped

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

我想知道如果 Scout 或 Algolia 中出现问题,是否有办法使用 WHERE LIKE 切换回正常的 eloquent 订阅?

是的,您可以使用普通查询在 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

您可以使用后备装饰器来装饰 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();
        }
    }
...
}