, (*1)
ΠΠΈΠ³ΡΠ°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ
ΠΠ Π΄Π»Ρ Laravel
![PHP Version][badge_php_version]
![Coverage][badge_coverage]
![License][badge_license], (*2)
ΠΠ°Π½Π½ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π² Π²Π°ΡΠ΅ Laravel-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» ΠΌΠΈΠ³ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
ΠΠ., (*3)
Install
Require this package with composer using the following command:, (*4)
$ composer require avto-dev/data-migrations-laravel "^2.4"
Installed composer
is required (how to install composer)., (*5)
You need to fix the major version of package., (*6)
ΠΠΏΡΠ±Π»ΠΈΠΊΡΠΉΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠ°ΠΉΠ», ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΈΠΌΡ ΡΠ°Π±Π»ΠΈΡΡ Π² ΠΠ Π΄Π»Ρ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
ΠΎ ΠΌΠΈΠ³ΡΠ°ΡΠΈΡΡ
, ΠΈΠΌΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΈ ΠΏΡΠΎΡΠΈΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ:, (*7)
$ php ./artisan vendor:publish --provider="AvtoDev\\DataMigrationsLaravel\\ServiceProvider"
ΠΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΠΎΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠΉΡΠ΅ ΡΠ°ΠΉΠ» ./config/data-migrations.php
Π½Π° ΡΠ²ΠΎΡ ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΠ΅ ΠΈ Π·Π°Π²Π΅ΡΡΠΈΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ, Π²ΡΠΏΠΎΠ»Π½ΠΈΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ:, (*8)
$ php ./artisan data-migrate:install
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅
ΠΡΠΎΠ±Π»Π΅ΠΌΠ°, ΠΊΠΎΡΠΎΡΡΡ ΡΠ΅ΡΠ°Π΅Ρ Π΄Π°Π½Π½ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ - ΡΡΠΎ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ Π² Laravel ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠ° ΠΌΠΈΠ³ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ "Π±ΠΎΠ΅Π²ΡΡ
" Π΄Π°Π½Π½ΡΡ
Π² Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (seeds
ΡΡΠΎ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ΅ΠΉΠΊΠΎΠ²ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ, Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ ΠΠ Π½Π΅ΡΡΡ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ Π·Π° ΡΡ
Π΅ΠΌΡ ΠΈ Ρ.Π΄., Π½ΠΎ Π½Π΅ Π΄Π°Π½Π½ΡΠ΅)., (*9)
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π±Ρ Π»ΡΡΡΠ΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ "ΠΌΠ΅Ρ
Π°Π½ΠΈΠΊΠΎΠΉ" ΡΠ°Π±ΠΎΡΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ° ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ - Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ 2 ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌ ΠΠ (default
ΠΈ second_db
), ΠΈ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· Π½ΠΈΡ
Π² ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Π΄Π°Π½Π½ΡΠ΅., (*10)
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ 2 ΠΊΠΎΠΌΠ°Π½Π΄Ρ:, (*11)
$ ./artisan make:data-migration "Add some data into first table"
$ ./artisan make:data-migration --connection="second_db" "Add some data into second table"
ΠΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΡΠΎΡΡΡ
ΡΠΎΠ·Π΄Π°Π΄ΡΡΡΡ 2 ΡΠ°ΠΉΠ»Π°:, (*12)
./storage/data_migrations/2018_01_01_022000_add_some_data_into_first_table.sql
./storage/data_migrations/second_db/2018_01_01_022001_add_some_data_into_second_table.sql
ΠΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΏΠΎΠ»Π½ΠΈΡΡ SQL-ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠΈΠΌΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠ΅ insert-Ρ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅ (ΠΏΠΎΠΌΠ½ΠΈΡΠ΅, ΡΡΠΎ ΠΈΠ΄Π΅ΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈ Π²Π΅ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ
ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΉ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ)., (*13)
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π²Π°ΠΌ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ:, (*14)
$ ./artisan data-migrate
Π Π΄Π°Π½Π½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄ΡΡ ΠΏΠΎΠΈΡΠΊ Π²ΡΠ΅Ρ
ΡΠ°ΠΉΠ»ΠΎΠ² (Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ΅Ρ
, ΡΡΠΈ ΠΈΠΌΠ΅Π½Π° Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Ρ ΡΠΎΡΠΊΠΈ) Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ ./storage/data_migrations
(ΠΏΡΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅) ΠΈ ΠΏΠΎΠΏΡΡΠ°Π΅ΡΡΡ ΠΈΡ
Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ, Π΅ΡΠ»ΠΈ Π·Π°ΠΏΠΈΡΡ ΠΎΠ± ΠΈΡ
Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½Π° Π² ΡΠ°Π±Π»ΠΈΡΠ΅ migrations_data
(ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ»Π° ΡΠΎΠ·Π΄Π°Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ data-migrate:install
)., (*15)
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ
ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ° ΡΠ»Π΅Π΄ΡΠ΅Ρ Π·Π½Π°ΡΡ ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ
ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡΡ
:, (*16)
- ΠΡΠ»ΠΈ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ-ΠΌΠΈΠ³ΡΠ°ΡΠΈΡΠΌΠΈ Π΄Π°Π½Π½ΡΡ
./storage/data_migrations
ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ, ΠΈ ΡΠΆΠ΅ Π² Π½Π΅ΠΉ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΡΡ ΡΠ°ΠΉΠ»-ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ - ΡΠΎ ΠΈΠΌΡ ΡΡΠΎΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΎ ΠΊΠ°ΠΊ ΠΈΠΌΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ ΠΠ (ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠ΅ Π² ΡΠ°ΠΉΠ»Π΅ ./config/database.php
), ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π°Π΄ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΉ, ΡΡΠΎ Π² Π½Π΅ΠΉ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½Ρ;
- ΠΠ»Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΊΠ»Π°ΡΡΡ, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ
ExecutorContract
. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ²ΠΎΠΉ, ΡΠΊΠ°Π·Π°Π² Π΅Π³ΠΎ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΈΠΌΡ Π² ΡΠ°ΠΉΠ»Π΅-ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ;
- ΠΠΈΠ³ΡΠ°ΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠΏΠ°ΠΊΠΎΠ²Π°Π½Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ
gzip
(gzip file.sql
). ΠΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ³ΠΎ php-ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ zlib
ΠΎΠ½ΠΈ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΡΠ²Π°ΡΡΡΡ "Π½Π° Π»Π΅ΡΡ", Π³Π»Π°Π²Π½ΠΎΠ΅ ΡΡΠΎΠ± ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π»ΠΎΡΡ Π½Π° .gz
;
- ΠΠΈΠ³ΡΠ°ΡΠΈΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡΡ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠ° "ΠΎΡΠΊΠ°ΡΠ°" (rollback-ΠΎΠ²).
Artisan-ΠΊΠΎΠΌΠ°Π½Π΄Ρ
ΠΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ° Π²Π°ΠΌ ΡΡΠ°Π½ΡΡ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:, (*17)
Π‘ΠΈΠ³Π½Π°ΡΡΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Ρ |
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
data-migrate:install |
ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡΡ Π² ΠΠ Π΄Π»Ρ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
ΠΎ ΠΌΠΈΠ³ΡΠ°ΡΠΈΡΡ
Π΄Π°Π½Π½ΡΡ
|
make:data-migration |
Π‘ΠΎΠ·Π΄Π°ΡΡ ΡΠ°ΠΉΠ»-ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ (ΠΏΡΡΡΠΎΠΉ) Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠΌΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌΠΈ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ |
data-migrate |
ΠΠ°ΠΏΡΡΠΊΠ°Π΅Ρ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ ΠΌΠΈΠ³ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
|
data-migrate:status |
ΠΡΠ²ΠΎΠ΄ΠΈΡ Π΄Π°Π½Π½ΡΠ΅ ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½Π½ΡΡ
ΠΈ Π½Π΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½Π½ΡΡ
ΠΌΠΈΠ³ΡΠ°ΡΠΈΡΡ
|
data-migrate:uninstall |
Π£Π΄Π°Π»ΡΠ΅Ρ ΡΠ°Π±Π»ΠΈΡΡ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΎ ΠΌΠΈΠ³ΡΠ°ΡΠΈΡΡ
Π΄Π°Π½Π½ΡΡ
ΠΈΠ· ΠΠ |
Testing
For package testing we use phpunit
framework and docker-ce
+ docker-compose
as develop environment. So, just write into your terminal after repository cloning:, (*18)
$ make build
$ make latest # or 'make lowest'
$ make test
Changes log
![Commits since latest release][badge_commits_since_release], (*19)
Changes log can be found here., (*20)
Support
![Issues][badge_pulls], (*21)
If you will find any package errors, please, make an issue in current repository., (*22)
License
This is open-sourced software licensed under the MIT License., (*23)