【问题标题】:’Call to a member function make() on null‘ When installing Eloquence'Call to a member function make() on null' 安装 Eloquence 时
【发布时间】:2016-11-13 05:26:39
【问题描述】:

我正在尝试在我的 Laravel 项目中安装 Eloquence。

Eloquence Installation

我正在关注安装,我已经完成了以下操作:

  1. 需要 composer.json 中的包
  2. 为模型添加 Eloquence 特征
  3. 将 Sofa\Eloquence\ServiceProvider 添加到 config/app.php providers 数组中

问题Post::search('jarek sofa')->get(); 导致

FatalThrowableError in Builder.php line 77:
Call to a member function make() on null

Here is my code

可能的原因:

  1. Eloquence 服务提供者未正确注册
  2. 可能与作曲家有关

提前致谢

【问题讨论】:

  • 根据 Github 上的这个问题,github.com/jarektkaczyk/eloquence/issues/56,听起来您的服务提供商没有正确注册。确保它是,您可以尝试运行 php artisan cache:clearcomposer dump-autoload
  • 是的,我也看到了这个问题。我觉得是因为我没有正确注册服务提供者,但据我了解,注册服务提供者只是将Sofa\Eloquence\ServiceProvider::class添加到config/app.php中的providers数组中,我已经这样做了

标签: laravel


【解决方案1】:

终于搞定了!

解决方法:添加\Sofa\Eloquence\Builder::setParserFactory(new \Sofa\Eloquence\Searchable\ParserFactory);

AppServiceProvider的引导方法中是这样的:

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        \Sofa\Eloquence\Builder::setParserFactory(new \Sofa\Eloquence\Searchable\ParserFactory);
    }

    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }
}

【讨论】:

  • 它对我有用!现在,当我在模型上设置 $searchableColumns = ['my_custom_field'] 时出现错误。
【解决方案2】:

您是否尝试过在控制台中运行 composer update 命令?

【讨论】:

  • 我刚刚在控制台中运行了php artisan cache:clearcomposer dump-autoloadcomposer update。完全没有变化
【解决方案3】:

我遇到了同样的问题,解决方法如下 向作曲家添加了依赖项 “要求”: { "sofa/eloquence": "~5.3", // 对于 Laravel 5.3.*

    // OR
    "sofa/eloquence": "~5.2", // for Laravel 5.2.*

    // OR
    "sofa/eloquence": "~5.1", // for Laravel 5.1.*

    // OR
    "sofa/eloquence": "~0.4", // for Laravel 5.0.*
    ...
},

然后在 config/app 中添加类 '提供者' => [

    /*
     * Laravel Framework Service Providers...
     */
    Illuminate\Auth\AuthServiceProvider::class,
    .....
    Illuminate\View\ViewServiceProvider::class,

    /*
     * Package Service Providers...
     */
    Laravel\Tinker\TinkerServiceProvider::class,

    /*
     * Application Service Providers...
     */
    App\Providers\AppServiceProvider::class,

    Sofa\Eloquence\ServiceProvider::class,
],

作曲家终于更新了

【讨论】:

    【解决方案4】:

    很抱歉提出了一个老话题,但对于可能会发现自己在这里的任何人,我有一个不同的解决方案:你不能有一个名为“搜索”的范围。

    我只是遇到了完全相同的异常,但不知道为什么,尽管我认为尝试通过 call_user_func_array 动态调用作用域是个问题。由于这个问题具有完全相同的范围名称,我认为它可能是这样的。可能还有很多我不知道的其他“保留”名称,但是一旦我将其更改为“searchName”,一切都很好。

    【讨论】:

      猜你喜欢
      • 2017-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-27
      • 2018-04-15
      • 2022-12-02
      • 1970-01-01
      • 2021-04-22
      相关资源
      最近更新 更多