netcreaties / laravel-synchronize
Laravel Synchronizations 允许您创建一次性同步,防止创建仅使用一次的命令
v2.0.2
2020-04-23 06:11 UTC
Requires (Dev)
- matthewbdaly/artisan-standalone: 0.0.*
- mockery/mockery: ~1.0
- orchestra/testbench: ^3.7
- orchestra/testbench-browser-kit: ^3.7
- php-coveralls/php-coveralls: ^2.1
- phpstan/phpstan: ^0.10.5
- phpunit/phpunit: ^7.0
- psy/psysh: ^0.9.8
- sebastian/phpcpd: ^4.0
- squizlabs/php_codesniffer: ^3.3
README
此包为您提供创建同步文件的能力,并防止您在例如:需要将旧结构数据与新的结构同步的数据库结构更改时编写一次性使用命令。
文档
安装
最佳安装此包的方式是通过终端使用 Composer。
从您的项目根目录运行以下命令
composer require netcreaties/laravel-synchronize
Laravel 5.5+
此包支持包发现。
执行迁移
入门
发布配置(可选)
发布配置将允许您覆盖此包使用的一些设置。例如,您可以定义同步文件应存储的位置。
php artisan vendor:publish --provider="LaravelSynchronize\Providers\ServiceProvider" --tag="config"
发布迁移
php artisan vendor:publish --provider="LaravelSynchronize\Providers\ServiceProvider" --tag="migrations"
执行迁移
php artisan migrate
使用
Laravel Synchronize 在执行迁移时,会执行与迁移类名相同的同步,但带有同步后缀。这是确保数据库完整性的推荐用法,但也可以独立执行同步(见同步命令部分)。
制作命令
php artisan make:synchronization {name}
在 database/synchronizations
创建同步文件
同步命令
php artisan synchronize
使用 --class 和 --force
在执行迁移之前可能需要同步。使用 --class 和 --force 可以帮助您达到这个目标。
您需要做的只是使用 Laravel 5.8.16+ 迁移事件。
示例
public function __construct() { Event::listen(MigrationStarted::class, function (MigrationStarted $listener) { if ($listener->migration instanceof $this && $listener->method === 'up') { Artisan::call('synchronize --class=TestASync --force'); echo Artisan::output(); } }); }
--force
使用 --force 即使同步已经运行也会执行同步。请谨慎使用。