Laravel7使用Scout8配置Meilisearch提示驱动不支持如何解决
问题原因
- 你安装的
laravel/scout:^8.1版本未内置Meilisearch驱动:Laravel官方在Scout v8.6.0版本才正式将Meilisearch纳入官方支持的内置驱动列表,v8.1版本的Scout默认仅支持Algolia等其他驱动,因此会抛出Driver [meilisearch] not supported异常。 - 文档参考版本不匹配:你参考的是Laravel 8.x版本的Scout文档,而当前项目使用的是Laravel 7.x,不同版本文档对应的依赖兼容范围存在差异,不能直接交叉复用配置逻辑。
可行解决办法
方案1:升级laravel/scout到兼容版本(推荐)
执行composer命令将Scout升级到8.x分支下支持Meilisearch的最新版本:
composer require laravel/scout:^8.6
升级完成后重新发布Scout配置文件覆盖旧配置:
php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"
确认config/scout.php文件中已存在meilisearch驱动的配置段,填入你的Meilisearch服务地址和密钥后,执行以下命令清除配置缓存即可:
php artisan config:clear
该方案无需修改业务代码,兼容性最好,且laravel/scout:^8.6完全兼容Laravel 7.x版本,不会出现框架层面的冲突。
方案2:手动注册Meilisearch驱动(不升级Scout的场景)
如果项目存在其他依赖约束无法升级Scout,可以通过服务容器扩展的方式手动注册Meilisearch驱动:
打开app/Providers/AppServiceProvider.php文件,在boot方法中添加以下代码:
use Laravel\Scout\EngineManager; use Meilisearch\Client; public function boot() { resolve(EngineManager::class)->extend('meilisearch', function ($app) { return new \Laravel\Scout\Engines\MeilisearchEngine( new Client( $app['config']->get('scout.meilisearch.host'), $app['config']->get('scout.meilisearch.key') ) ); }); }
保存文件后执行php artisan config:clear清除缓存,驱动即可正常生效。
内容的提问来源于stack exchange,提问作者Tomas Lucena
相关产品推荐
相关产品推荐

