首页 > 解决方案 > 在文件夹中调用 Laravel Seeder

问题描述

我已经升级到 Laravel 8,但我在子目录中的自定义播种器无法正常工作。该文件位于database/seeders/tests/TestSeeder.php.

当我运行该命令php artisan db:seed --class="TestSeeder"时,它会返回一条错误消息:

Target class [Database\Seeders\TestSeeder] does not exist.

播种机

<?php

namespace Database\Seeders\Tests;

class TestSeeder extends BaseSeeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
       // codes
    }
}

作曲家.json

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

标签: phplaravellaravel-8laravel-seeding

解决方案


Laravel 假设你正在运行Database\Seeders\DatabaseSeeder类中的播种机。如果您提供了一个不合格的类名,例如TestSeeder,它将假定您的意思是Database\Seeders\TestSeeder该类。

因此,您应该指定完全限定的类名。

php artisan db:seed --class="Database\\Seeders\\Tests\\TestSeeder"

推荐阅读