无法找到名称[默认] [主题]的工厂

时间:2016-02-21 09:14:44

标签: php laravel-5.1

我只想要一些可以从我的数据库中循环的虚拟数据,但是当我尝试使用播种器时,我收到此错误:

unable to locate factory with name [default] [Subject]

我运行的代码是:

php artisan db:seed --class=SubjectSeeder

ModelFactory.php:

$factory->define(App\Subject::class, function (Faker\Generator $faker) {
    return [
        'name' => $faker->name,
        'code' => $faker->str_random(3),
        ];
});

SubjectSeeder.php:

public function run()
{
    $subject = factory(Subject::class)->make();

    Product::create([
        'name' => $subject->name,
        'code' => $subject->code
    ]);
}

subject.php:

class Subject extends Model
{
    protected $fillable = [
        'name', 'code',
    ];
};

3 个答案:

答案 0 :(得分:1)

OddDream的回答是正确的。

只是解释一下。

  1. 您的模型/对象可能无法正确链接。

    $ subject = factory(\ App \ Subject :: class) - > make();

  2. 另一个原因是缓存。你可能想做点什么。

    php artisan config:清楚 php artisan config:cache

  3. 让我知道它是否对你有所帮助。

    :)

答案 1 :(得分:0)

如果有人和我犯了同样的错误,我只想定义state工厂,没有默认工厂:

$factory->define(\App\Model::class, function (Faker $faker) {

答案 2 :(得分:-1)

SubjectSeeder.php:

$subject = factory(\APP\Subject::class)->make();