【问题标题】:BadMethodCallException: Call to undefined method Illuminate\Database\Query\Builder::makeAllSearchable()BadMethodCallException:调用未定义的方法 Illuminate\Database\Query\Builder::makeAllSearchable()
【发布时间】:2017-01-27 17:04:22
【问题描述】:

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

【问题讨论】:

    标签: php laravel laravel-5.3


    【解决方案1】:

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

    <?php
    
    namespace App;
    
    use Laravel\Scout\Searchable;
    use Illuminate\Database\Eloquent\Model;
    
    class User extends Model
    {
        use Searchable;
    }
    

    【讨论】:

    • 我真的为自己没有遵循如此简单的指示而感到羞耻……不仅如此,为什么可搜索的特性甚至会出现在控制器中?一天编码的时间太多了。非常感谢。
    【解决方案2】:

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

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

    您也可以评论toSearchableArray()函数,导入现有用户,然后添加回来。

    【讨论】:

      猜你喜欢
      • 2019-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-10
      • 2019-10-20
      • 1970-01-01
      • 1970-01-01
      • 2014-04-23
      相关资源
      最近更新 更多