在Laravel 6中找不到工厂

时间:2020-02-08 19:23:21

标签: php laravel laravel-6 factories

我被困住了……我试图让一组工厂在Laravel 6中工作,不断出现以下错误:

InvalidArgumentException with message 'Unable to locate factory with name [default] [User].'

在这里和网络上还有其他关于此的文章,我已经尝试了所有这些解决方案。我对工厂的代码如下:

<?php

/** @var \Illuminate\Database\Eloquent\Factory $factory */

use App\Thread;
use Faker\Generator as Faker;

$factory->define(Thread::class, function (Faker $faker) {
    return [
        'user_id' => function () {
            return factory('App\User')->create()->id;
        },
        'title' => $faker->sentence,
        'body' => $faker->paragraph
    ];
});

我正在使用php artisan tinker尝试生成数据库条目,以便可以在其余模型中工作。我正在使用的命令如下:

factory('Thread',50)->create()

我尝试在工厂调用中指定名称空间,尝试将其用双引号引起来,并尝试在末尾添加':: class'。控制器在那里,模型在那里,迁移按预期进行,但是每次我在修补匠中经营工厂时,它都不会给我。我发现的大多数文档也都引用了旧版本的Laravel,因此我不确定它们是否为我提供了正确的语法。

值得注意的是,如果UserFactory也不起作用,则库存也将减少。这是Laravel 6的最新下载,我今天做完了Laracasts的整个课程。这门课程比较老,主要针对Laravel 5.4,但是我可以弄清楚这种转换……我只是无法将其用于挽救生命,也无法弄清楚为什么。

如果您想查看其他代码,我将整个项目上传到这里:https://github.com/aarpie100/laracasts_forum

帮助?

2 个答案:

答案 0 :(得分:1)

尝试发送Thread :: class而不是Thread作为字符串发送。如果您以字符串形式发送,我想应该是“ App \ Thread”。

答案 1 :(得分:0)

工厂函数当你调用 你应该这样写的类名(Thread::class)