0

我被困住了......我试图让一组在 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 提供的库存也不起作用。这是我今天在 Laracasts 上的一门课程中重新下载的 Laravel 6。该课程较旧,专注于 Laravel 5.4,但我可以弄清楚转换......我只是无法让这个工作来挽救我的生命,我不知道为什么。

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

帮助?

4

2 回答 2

1

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

于 2020-02-08T19:28:08.563 回答
0

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

于 2021-04-09T02:25:39.033 回答