custom-d / laravel-seedonce
Laravel 包,用于只运行一次迁移
Requires
- php: ^8.1
- illuminate/database: ^10.0
Requires (Dev)
- laravel/pint: ^1.6
- nunomaduro/larastan: ^2.0
- orchestra/testbench: ^8.0
- phpunit/phpunit: ^10.0
README
Laravel SeedOnce
此包与 php artisan migrate
类似工作。当使用此包时,即使多次运行 php artisan db:seed
(每次部署),每个迁移器也只会运行一次。
为什么开发了这个包?
此包的目的是为了使开发者更容易在团队中运行迁移器,并在自动化部署期间运行迁移器。无需记住哪些迁移器已执行,哪些尚未执行。所有这些都由本包处理。
假设
此包假设您使用一个迁移器(例如 DatabaseSeeder
)类作为运行所有其他迁移器的主/父类。此主迁移器类不应直接在其自身上插入任何数据。它应该仅用于运行其他迁移器类。
安装
使用 composer 安装此包。
composer require custom-d/laravel-seedonce
可选,发布包配置文件。默认配置在大多数情况下都适用。
php artisan vendor:publish --tag=laravel-seedonce-config
通过 composer 安装包后,运行迁移以创建一个将包含迁移器信息的表。
php artisan migrate
注意:这将创建一个名为 seeders
的表。如果您想更改此表名,则必须发布包的配置(上述步骤)并修改 config/seedonce.php
中的 table
的值。
配置
发布配置文件后,您可以编辑它以满足您的需求。配置选项如下
table
:这是将保存已执行迁移器详细信息的表名。默认值是 seeders,在大多数情况下应该适用。database_seeder
:这是将种子所有其他迁移器的类的名称。在大多数情况下,这将默认为 DatabaseSeeder。确保在您使用不同的类作为种子所有其他迁移器的入口点时更改此值。folder_seeder
:这是包含迁移器文件的文件夹,laravel < 8 使用 seeds,laravel >= 8 使用 seeders。
使用方法
在所有迁移器类中包括主迁移器(例如 DatabaseSeeder
)类中使用 CustomD\SeedOnce\Traits\SeedOnce
特性。
<?php
File: database/seeds/DatabaseSeeder.php
use Illuminate\Database\Seeder;
use CustomD\SeedOnce\Traits\SeedOnce;
class DatabaseSeeder extends Seeder
{
use SeedOnce;
/**
* Seed the application's database.
*
* @return void
*/
public function run()
{
$this->call(UsersTableSeeder::class);
$this->call(RolesTableSeeder::class);
}
}
?>
<?php
File: database/seeds/UsersTableSeeder.php
use Illuminate\Database\Seeder;
use CustomD\SeedOnce\Traits\SeedOnce;
class UsersTableSeeder extends Seeder
{
use SeedOnce;
/**
* Seed the application's database.
*
* @return void
*/
public function run()
{
// User table seeder logic
}
}
?>
就这么多。现在无论您运行多少次 php artisan db:seed
,UsersTableSeeder
也只会执行一次。
有现有迁移器的项目
上述使用说明假设您在运行任何迁移器之前已安装此包。如果您在安装此包之前已执行了一些或所有迁移器,那么您需要将那些迁移器标记为已执行。
运行以下命令将所有现有迁移器类标记为已执行。
php artisan seedonce:mark-seeded
如果您只想标记特定的迁移器类为已执行,则运行此命令
php artisan seedonce:mark-seeded --class=UsersTableSeeder
迁移器状态
您通常会想知道您的迁移器类的状态,即哪些迁移器已执行,哪些尚未执行。运行以下命令以获取状态
php artisan seedonce:status
这将输出一个包含每个迁移器类状态的表格
测试
可以通过以下命令执行包的单元测试(从包的根目录内部)
composer test
致谢
许可
MIT 许可证(MIT)。请参阅许可文件以获取更多信息。