mll-lab/laravel-conditional-migrations

该包已被弃用且不再维护。作者建议使用 mll-lab/laravel-utils 包代替。

仅在需要时运行您的 Laravel 迁移

v3.1.1 2023-02-10 13:44 UTC

This package is auto-updated.

Last update: 2024-04-23 08:18:38 UTC


README

弃用

该包已被弃用,转而使用 https://github.com/mll-lab/laravel-utils/releases/tag/v4.0.0 并将不再更新。

CI Status codecov

Packagist Latest Stable Version GitHub license

只有当条件为真时才运行迁移

基于 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