Seeder 自动发现
Pin\Database\DatabaseSeeder 提供 Seeder 自动发现能力。
基本开始
让项目中的 DatabaseSeeder 继承 Pin\Database\DatabaseSeeder:
php
namespace Database\Seeders;
class DatabaseSeeder extends \Pin\Database\DatabaseSeeder
{
}然后执行:
bash
php artisan db:seed自动发现规则
Pin 默认扫描:
text
database/seeders仅会发现文件名匹配以下规则的 Seeder:
text
*Seeder.php例如:
text
database/seeders/UserSeeder.php
database/seeders/Content/ArticleSeeder.php文件路径与命名空间
Seeder 文件需要遵循 Laravel 默认的命名空间约定。
例如:
text
database/seeders/UserSeeder.php对应:
php
Database\Seeders\UserSeeder子目录会映射到命名空间:
text
database/seeders/Content/ArticleSeeder.php对应:
php
Database\Seeders\Content\ArticleSeederSeeder 类应保持文件路径、命名空间和类名一致:
php
namespace Database\Seeders\Content;
use Illuminate\Database\Seeder;
class ArticleSeeder extends Seeder
{
public function run(): void
{
//
}
}执行顺序
自动发现适用于相互独立的基础数据。
对于存在明确依赖关系的 Seeder,不建议依赖文件扫描顺序。可以通过显式调用定义执行顺序:
php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
public function run(): void
{
$this->call([
RoleSeeder::class,
AdminSeeder::class,
]);
}
}