sonole / laravel-db-seed-rollback
v1.0.1
2023-11-09 11:53 UTC
Requires
- laravel/framework: ^9.0
This package is auto-updated.
Last update: 2024-09-08 16:22:03 UTC
README
简介
在包开发的情况下,尤其是那些涉及数据库种子器的,我建议为 db:seed
命令引入 --rollback
选项。这个特性补充了现有的 migrate:rollback
命令,并为高效数据库种子管理提供了解决方案。
问题
目前,许多项目依赖于使用种子器修改数据库的包。然而,当出现错误、需求变更或需要删除包等复杂情况时,缺乏回滚这些种子更改的流畅机制。虽然 migrate:rollback
命令有助于迁移,但在涉及多个自定义包的复杂项目中,缺乏针对种子器的相应选项,这带来了挑战。
解决方案
通过引入 db:seed
命令的 --rollback
选项,包的开发者和维护者现在可以解决这些问题。
用例
只需运行带有 --rollback
选项的 db:seed
命令,就会调用 down()
函数!
php artisan db:seed --class="Vendor\\Package\\Database\\Seeders\\UsersSeeder" --rollback #or php artisan db:seed --rollback
namespace Vendor\Package\Database\Seeders /** If your seeder does not extend the package's Seeder: * Sonole\LaravelDbSeedRollback\Illuminate\Database\Seeder * then a new temporary file will be created at database/seeders, and it will be deleted after down() execution. */ use Illuminate\Database\Seeder; class UsersSeeder extends Seeder { /** * Seed the application's database. */ public function run(): void { //\App\Models\User::factory(10)->create(); // \App\Models\User::factory()->create([ // 'name' => 'Test User', // 'email' => 'test@example.com', // ]); } /** * Reverse the effects of the database seeding operation. */ public function down(): void { \App\Models\User::where('email', 'foo@bar.com')->delete(); } }