BadMethodCallException:调用未定义的方法 Illuminate\Database\Query\Builder::makeAllSearchable()

BadMethodCallException: Call to undefined method Illuminate\Database\Query\Builder::makeAllSearchable()

我正在尝试 运行 命令 php artisan scout:import "App\User" 根据文档 (Laravel 5.3 Scout Documentation) 将用户记录导入搜索驱动程序。我不断收到 [BadMethodCallException]
调用未定义的方法 Illuminate\Database\Query\Builder::makeAllSearchable() 作为一个错误。为什么会出现此错误?我在我的用户控制器中包含了可搜索特征,并将 scout class 添加到我的 app/config providers 数组中,所以我很难理解为什么该方法不存在......

您不应将特征添加到控制器,而应添加到模型。所以在你的情况下 App\User.php

<?php

namespace App;

use Laravel\Scout\Searchable;
use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    use Searchable;
}

正如 Jakub 所说,您必须将 Searchable 特征添加到您的用户 模型,而不是控制器。

如果您在模型上使用 toSearchableArray(),请不要忘记在数组中包含 id 列,否则它将无法工作。

您还可以评论 toSearchableArray() 功能,导入现有用户,然后将其添加回来。