onlinepets / laravel-conditional-migrations
仅在您需要时运行您的 Laravel 迁移
Requires
- php: ^7.0
- laravel/framework: 5.5.* || 5.6.*
Requires (Dev)
- graham-campbell/testbench: ^4.0
- phpunit/phpunit: ^6.5
This package is not auto-updated.
Last update: 2024-09-29 05:49:16 UTC
README
我们不维护此版本了,请查看 Laravel conditional migrations 以获取最新版本
Laravel Conditional Migrations
此包允许您根据条件配置迁移。我们暴露了一个 ConditionalMigration
接口,您可以让您的迁移实现以确定是否应该运行。
索引
安装
您需要按照几个步骤来安装此包。
下载
通过 composer
$ composer require onlinepets/laravel-conditional-migrations
或者在 composer.json
中添加包到依赖项,并在命令行上运行 composer update
来下载包
{ "require": { "onlinepets/laravel-conditional-migrations": "^1.0" } }
注册服务提供者
如果您 没有 使用 自动发现,请在 config/app.php
中注册 \Onlinepets\ConditionalMigrations\ServiceProvider
'providers' => [ // ... Onlinepets\ConditionalMigrations\ServiceProvider::class, ];
用法
为了确保迁移仅在凌晨1点至2点之间运行,实现 ConditionalMigration
接口及其 ->shouldRun()
方法
use Onlinepets\ConditionalMigrations\Contracts\ConditionalMigration; use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; use Illuminate\Support\Carbon; class DoSomethingVeryIntensive extends Migration implements ConditionalMigration { public function up() { Schema::table('users', function (Blueprint $table) { // }); } public function down() { Schema::table('users', function (Blueprint $table) { // }); } public function shouldRun(): bool { return (new Carbon('1 AM'))->lessThan(now()) && (new Carbon('2 AM'))->greaterThan(now()); } }
上面的代码片段将确保 do_something_very_intensive
迁移将跳过,除非它在凌晨1点至2点之间执行。如果迁移在白天执行会对包含大量数据的表添加索引等操作,这可能会很有用。
夜间定时任务
为了充分利用此包,您可以安排一个任务在“白名单”时间内迁移数据库。此包不实现此功能。
配置
您可以可选地发布配置文件
$ php artisan vendor:publish --provider="Onlinepets\ConditionalMigrations\ServiceProvider"
这将创建 config/conditional-migrations.php
文件,您可以在其中配置迁移是否应该运行,无论个人配置如何
return [ 'always_run' => env('APP_DEBUG', false), ];
如果您想进行更复杂的计算,也可以使用闭包
return [ 'always_run' => function (): bool { // calculate whether it should run }, ];
贡献
所有贡献(拉取请求、问题和功能请求)都受欢迎。不过,请首先阅读 CONTRIBUTING.md。查看 贡献者页面 了解所有贡献者。
许可
onlinepets/laravel-conditional-migrations
在 MIT 许可证(MIT)下发布。请参阅 许可证文件 了解更多信息。