Database: Seeding
今回、Module
構造の中で、Seeding
してみたいと思い、試してみました。
modules/Admin/Database/Seeders
フォルダ内にUserSeeder.php
があるケースを想定しています。
php artisan db:seed --class=
Laravel
のSeeding
を使って、上記のようにクラスを指定することで、実現します。
失敗例
php artisan db:seed --class=Modules\Admin\Database\Seeders\UserSeeder
上記のように指定すると、下記のようにエラーが出ます。
Illuminate\Contracts\Container\BindingResolutionException Target class [Database\Seeders\ModulesAdminDatabaseSeedersUserSeeder] does not exist.
成功例
php artisan db:seed --class=Modules\\Admin\\Database\\Seeders\\UserSeeder
Database seeding completed successfully.
Database/Console/Seeds/SeedCommand.php
getSeeder()
の一部を引用します。
$class = $this->input->getArgument('class') ?? $this->input->getOption('class'); if (! str_contains($class, '\\')) { $class = 'Database\\Seeders\\'.$class; }
コマンドの--class
に、\\
が含まれていなければ、頭にDatabase\\Seeders\\
を付けていますね。