在文件夹内调用 Laravel Seeder

Ken*_*eth 9 php laravel laravel-seeding laravel-8

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

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

Target class [Database\Seeders\TestSeeder] does not exist.
Run Code Online (Sandbox Code Playgroud)

播种机

<?php

namespace Database\Seeders\Tests;

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

作曲家.json

"autoload": {
    "psr-4": {
        "App\\": "app/",
        "Database\\Factories\\": "database/factories/",
        "Database\\Seeders\\": "database/seeders/",
        "Database\\Seeders\\Tests\\": "database/seeders/tests/"
    }
},
Run Code Online (Sandbox Code Playgroud)

mik*_*n32 22

Laravel 假设您正在运行类中的播种器Database\Seeders\DatabaseSeeder。如果您提供不合格的类名,例如TestSeeder,它会假定您指的是该类Database\Seeders\TestSeeder

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

php artisan db:seed --class="Database\\Seeders\\Tests\\TestSeeder"
Run Code Online (Sandbox Code Playgroud)