首页 > 解决方案 > Laravel 工厂

问题描述

嗨,我是在 Laravel 上创建工厂的新手,我正在建立一个博客网站。目前不需要用户,因为它是草稿,但我正在尝试建立一个工厂来创建虚拟博客文章。

我有一个 Post.php 文件,如下所示:

namespace App;

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    protected $table = 'posts';

    public $primaryKey = 'id';

    public $timestamps = true;
}

我的 PostFactory 看起来像这样

use App\Post;
use Faker\Generator as Faker;
use Illuminate\Support\Str;

$factory->define(App\Post::class, function (Faker $faker) {
    return [
        'title' => $faker->name,
        'body' => $faker->unique()->safeEmail,
    ];
});

但是每次我尝试创建记录时,它都会抛出此错误“InvalidArgumentException 并带有消息'无法找到 [App/Post] 的工厂。'”我知道它如何链接这些文件,但我不知道该怎么做。

标签: laraveleloquentfactory

解决方案


首先如上所述,您的文件必须命名为 Post.php 而不是 posts.php。

由于您在文件开头使用 App\Post,因此您可以简单地调用Post::class $factory->define(Post::class, function (Faker $faker)

另一种选择也可能是您缺少作曲家类图中的工厂文件夹:

"autoload": {
        "psr-4": {
            "App\\": "app/"
        },
        "classmap": [
            "database/seeds",
            "database/factories"
        ]
    },

如果这不能解决问题,那么您可能需要在调用工厂的地方发布代码

@编辑

这是对约定的很好的概述


推荐阅读