onlinepets/laravel-conditional-migrations
Composer 安装命令:
composer require onlinepets/laravel-conditional-migrations
包简介
Run your Laravel migrations only when you want them to
README 文档
README
We don't maintain this version anymore, checkout Laravel conditional migrations for the latest version
Laravel Conditional Migrations
This package allows you to configure migrations to run based on a condition. We
expose a ConditionalMigration interface, which you can have your migrations
implement to determine whether or not it should run.
Index
Installation
You'll have to follow a couple of steps to install this package.
Downloading
Via composer:
$ composer require onlinepets/laravel-conditional-migrations
Or add the package to your dependencies in composer.json and run
composer update on the command line to download the package:
{
"require": {
"onlinepets/laravel-conditional-migrations": "^1.0"
}
}
Registering the service provider
If you're not using auto discovery,
register the \Onlinepets\ConditionalMigrations\ServiceProvider in config/app.php:
'providers' => [ // ... Onlinepets\ConditionalMigrations\ServiceProvider::class, ];
Usage
To make sure a migration only runs between 1 AM and 2 AM, implement the ConditionalMigration
interface and its ->shouldRun() method:
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()); } }
The code snippet above will make sure the do_something_very_intensive migration
will be skipped unless it is executed between 1 AM and 2 AM. This can be useful
if your migration does something that should not be run during the daytime, like
adding an index to a table containing lots of data.
Nightly cronjob
To take full advantage of this package, you can schedule a task to migrate the database during the "whitelisted" times. This package does not implement this.
Configuration
You can optionally publish the configuration file:
$ php artisan vendor:publish --provider="Onlinepets\ConditionalMigrations\ServiceProvider"
This will create the file config/conditional-migrations.php, which is where you can
configure whether your migrations should run, regardless of individual configuration:
return [ 'always_run' => env('APP_DEBUG', false), ];
You can also use a closure if you want to do more advanced calculations:
return [ 'always_run' => function (): bool { // calculate whether it should run }, ];
Contributing
All contributions (pull requests, issues and feature requests) are welcome. Make sure to read through the CONTRIBUTING.md first, though. See the contributors page for all contributors.
License
onlinepets/laravel-conditional-migrations is licensed under the MIT License (MIT). Please
see the license file for more information.
统计信息
- 总下载量: 1.28k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2018-03-28