Laravel 8,未找到模型工厂类

2022-08-30 12:51:44

因此,当使用laravel 8.x中引入的新模型工厂类时,这个奇怪的问题说laravel找不到与模型相对应的工厂。我得到这个错误

PHP Error:  Class 'Database/Factories/BusinessUserFactory' not found in .....

我跟着啦的医生,我不知道发生了什么

这是类BusinessUser

<?php

namespace App;

use Database\Factories\BusinessUserFactory;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class BusinessUser extends Model
{
    use HasFactory;
}

和工厂

<?php

namespace Database\Factories;

use App\BusinessUser;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str;

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

    /**
     * Define the model's default state.
     *
     * @return array
     */
    public function definition()
    {
        return [
            'name' => "dsfsf"
        ];
    }
}


任何想法或线索都非常感谢。


答案 1

如果从以前的版本升级到 8,则可能缺少 中命名空间的 autoload 指令:Database\Factoriescomposer.json

"autoload": {
    "psr-4": {
        "App\\": "app/",
        "Database\\Factories\\": "database/factories/",
        "Database\\Seeders\\": "database/seeders/"
    }
},

您也可以移除零件,因为不再需要它。classmap

在进行这些更改后运行。composer dump

Laravel 8.x 文档 - 升级指南 - 数据库 - 播种机和工厂命名空间


答案 2

显然,您还必须尊重文件夹结构。例如,如果用户模型位于以下路径中:,则相应的工厂应位于 中。app\Models\Users\Userdatabase\factories\Users\UserFactory


推荐