Laravel 8-找不到类'数据库/工厂/用户'

时间:2020-10-04 07:44:02

标签: laravel-8

我在数据库->工厂目录中有此PostFactory.php文件:

<?php

namespace Database\Factories;

use App\Models\Post;
use Illuminate\Database\Eloquent\Factories\Factory;


class PostFactory extends Factory
{
    /**
     * The name of the factory's corresponding model.
     *
     * @var string
     */
    protected $model = Post::class;

    /**
     * Define the model's default state.
     *
     * @return array
     */
    public function definition()
    {
        return [
            'user_id'   => User::factory(),
            'title' => $this->faker->sentence,
            'message' => $this->faker->paragraph
        ];
    }
}

现在,当我运行此命令时

Post::factory()->create();

来自修补匠

我收到了该错误消息

未找到“数据库/工厂/用户”类

:(有什么我想念的吗?

enter image description here

2 个答案:

答案 0 :(得分:2)

您需要导入用户模型。 对于Laravel 8,您的PostFactory.php文件应如下所示;

<?php

namespace Database\Factories;

use App\Models\User;
use App\Models\Post;
use Illuminate\Database\Eloquent\Factories\Factory;


class PostFactory extends Factory
{
    /**
     * The name of the factory's corresponding model.
     *
     * @var string
     */
    protected $model = Post::class;

    /**
     * Define the model's default state.
     *
     * @return array
     */
    public function definition()
    {
        return [
            'user_id'   => User::factory(),
            'title' => $this->faker->sentence,
            'message' => $this->faker->paragraph
        ];
    }
}

检查laravel docs on writing factories以获得更多信息。

更新:

关于prnt上的错误(在注释中列出),您将需要提供更多信息。

无论如何开始考虑考虑检查数据库:

  • 没有 user_id 的帖子。也就是说,您可能在添加外键约束之前已添加,因此不属于任何用户。

如果是这种情况,请考虑将其删除,然后尝试再次创建工厂。当您尝试将必填列强加到没有该列的数据时,必填列将因此出错。

答案 1 :(得分:0)

因为我也有同样的问题。首先,我更改了与模型名称相同的工厂名称。就像我们有 Blog Model .. 我们将制作 BlogFactory 。所以它可以找到工厂的名称。