You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Scout+Meilisearch报错:Builder::search方法不存在

排查与解决方法

1. 检查GetOrganizations类的scope方法代码

错误核心是Laravel\Scout\Builder实例上调用了不存在的search方法。你需要确认在调用Organization::search($this->search)之后,有没有在链式调用中再次使用->search(...)。

比如错误的写法:

// 错误:在Scout Builder实例上重复调用search方法
Organization::search($this->search)->search('额外关键词')->get();

正确的写法应该是直接使用Organization::search($this->search)初始化搜索,若需追加条件,使用Scout提供的query()、where()等方法:

// 正确示例
$query = Organization::search($this->search);

// 如需添加额外筛选条件
$query->where('status', 'active');

return $query->get();

2. 区分Eloquent查询与Scout查询逻辑

如果你的scope方法原本用于Eloquent查询,注意不要混淆调用链:Scout的search()是模型的静态方法,返回的是Scout Builder实例,而非Eloquent Builder;反之,Eloquent的query()返回的实例也不支持search()方法。确保整个调用链的实例类型统一。

3. 验证Scout版本与Laravel 11兼容性

Laravel 11要求Scout版本至少为v10.0,执行命令确认版本:

sail composer show laravel/scout

若版本低于v10.0,执行升级:

sail composer require laravel/scout:^10.0

4. 清除配置与缓存

旧缓存可能导致类加载异常,执行以下命令清理:

sail php artisan config:clear
sail php artisan cache:clear

5. 确认模型的Searchable trait正确引入

再次检查Organization模型代码,确保trait和索引方法正常:

use Laravel\Scout\Searchable;

class Organization extends Model
{
    use Searchable;

    public function toSearchableArray()
    {
        return [
            'id' => $this->id,
            'name' => $this->name,
            // 其他需要索引的字段
        ];
    }
}

内容的提问来源于stack exchange,提问作者Jorge Cordero

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 04:23:14