This package improves standard Laravel migrations to add support for raw SQL files during migration and seeding. So you can easily use your favorite visual tool for database development like MySQL Workbench with Laravel 🥳
Important
The Migrator uses the same mechanism as Squashing Migrations so not all databases are supported, please see Laravel Documentation for more details.
Requirement | Constraint | Supported by |
---|---|---|
PHP | ^8.3 |
HEAD ⋯ 5.0.0 |
^8.2 |
HEAD ⋯ 2.0.0 |
|
^8.1 |
6.4.2 ⋯ 2.0.0 |
|
^8.0 |
4.6.0 ⋯ 2.0.0 |
|
^8.0.0 |
1.1.2 ⋯ 0.12.0 |
|
>=8.0.0 |
0.11.0 ⋯ 0.4.0 |
|
>=7.4.0 |
0.3.0 ⋯ 0.1.0 |
|
Laravel | ^11.0.0 |
HEAD ⋯ 6.2.0 |
^10.34.0 |
HEAD ⋯ 6.2.0 |
|
^10.0.0 |
6.1.0 ⋯ 2.1.0 |
|
^9.21.0 |
5.6.0 ⋯ 5.0.0-beta.1 |
|
^9.0.0 |
5.0.0-beta.0 ⋯ 0.12.0 |
|
^8.22.1 |
3.0.0 ⋯ 0.2.0 |
|
^8.0 |
0.1.0 |
composer require lastdragon-ru/lara-asp-migrator
To create migration, just use the following command:
php artisan lara-asp-migrator:sql-migration MyMigration
It will create the following files in database/migrations
:
2020_11_05_170802_my_migration.php
2020_11_05_170802_my_migration~down.sql
2020_11_05_170802_my_migration~up.sql
Usually, you just need to put your SQL into *~up.sql
and *~down.sql
😇 Note that you still can use standard Laravel migrations. Also, migrations can be placed into subdirectories.
The package uses a bit different approach compared with standard and provides a few different types of seeders:
Seeder
- unlike standardSeeder
it is safer and will not run seeder if it is already applied (so it is safe for production 🤩);SqlSeeder
- extendsSmartSeeder
and allow you to use SQL.
To create SQL Seeder you should use the command:
php artisan lara-asp-migrator:sql-seeder MySeeder
The command will create two files:
MySeeder.php
- The class can be used to customizeisSeeded()
method, e.g. you can check if a model exists in the database.MySeeder.sql
- the file where the SQL seed stored.
Please follow Upgrade Guide.
This package is the part of Awesome Set of Packages for Laravel. Please use the main repository to report issues, send pull requests, or ask questions.