在文件夹内调用 Laravel 播种器

Calling Laravel Seeder inside folder

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

当我运行命令php artisan db:seed --class="TestSeeder"它return一个错误信息:

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
    }
}

composer.json

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

Laravel 假设您是 运行 来自 Database\Seeders\DatabaseSeeder class 的播种者。如果您提供不合格的 class 名称,例如 TestSeeder,它会假定您指的是 Database\Seeders\TestSeeder class.

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

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

子文件夹不用管,命令里不用提,

  1. 只是 运行 composer dump-autoload
  2. 然后 运行 php artisan db:seed --class="TestSeeder" 命令

这会很好用。