mll-lab / laravel-conditional-migrations
v3.1.1
2023-02-10 13:44 UTC
Requires
- php: ^7.3 || ^8
- laravel/framework: ^6 || ^7 || ^8 || ^9 < 9.21
Requires (Dev)
- graham-campbell/testbench: ^5.3.1
- nunomaduro/larastan: ^0.5 || ^0.6 || ^1
README
弃用
该包已被弃用,转而使用 https://github.com/mll-lab/laravel-utils/releases/tag/v4.0.0 并将不再更新。
只有当条件为真时才运行迁移
基于 https://github.com/onlinepets/laravel-conditional-migrations
安装
通过 composer
composer require mll-lab/laravel-conditional-migrations
使用方法
要条件性地运行迁移,实现 ConditionalMigration
接口及其 ->shouldRun()
方法
use MLL\ConditionalMigrations\Contracts\ConditionalMigration; use Illuminate\Database\Migrations\Migration; use Illuminate\Support\Carbon; class DoSomethingVeryIntensive extends Migration implements ConditionalMigration { public function up() { ... } public function down() { ... } public function shouldRun(): bool { return (new Carbon('1 AM'))->lessThan(now()) && (new Carbon('2 AM'))->greaterThan(now()); } }
上述代码片段将确保只有在凌晨 1 点到 2 点之间执行时,才会跳过 do_something_very_intensive
迁移。如果迁移在白天执行会带来不利影响,比如向包含大量数据的表添加索引,这会很有用。
配置
您可以选择发布配置文件
php artisan vendor:publish --tags=conditional-migrations-config
这将创建文件 config/conditional-migrations.php
。
always_run
选项允许您覆盖单个迁移中设置的条件。
'always_run' => env('APP_DEBUG', false),
您还可以使用闭包进行更复杂的计算
'always_run' => function (): bool { // calculate if migrations should always run },
变更日志
此项目的所有重要更改均记录在 CHANGELOG.md
中。
贡献
欢迎贡献,请参阅 CONTRIBUTING.md。
许可
请参阅 LICENSE.md。