0

我正在尝试在模块内使用 laravel 工厂。

我像这样在控制器内部调用工厂

$ar_reference = factory(ArReference::class)->create();

这是我的工厂。

use App\Models\ArReference;
use Faker\Generator as Faker;

$factory->define(ArReference::class, function (Faker $faker) {

    return [
        'reference_no' => 'My Ar'
    ];
});

我在我的模块 ServiceProvider ArServiceProvider内部的registerFactories()函数中像这样调用工厂。

public function registerFactories() {

        $this->app->singleton(Factory::class, function () {
            return Factory::construct(__DIR__ . '/Database/factories');
        });
}

但不幸的是我收到了这个错误

传递给 Illuminate\Database\Eloquent\Factory::construct() 的参数 1 必须是 Faker\Generator 的实例,给定字符串,在第 94 行的 /var/www/Modules/Ar/Providers/ArServiceProvider.php 中调用

4

1 回答 1

1

您需要在第一个参数中传递 Faker 生成器,请参阅:https ://laravel.com/api/5.5/Illuminate/Database/Eloquent/Factory.html#method_construct

return Factory::construct(\Faker\Factory::create(), __DIR__ . '/Database/factories');
于 2020-04-02T11:59:28.093 回答