database
, laravel
I got a mission to clone an existing service, which has its database separately from the original.
Here is my to-do list:
This article will only record the first step. the next step will be written in the second episode.
Since this project is a Laravel app, but without migration files so I came out with 2 solutions:
php artisan migrate
to create the same tables to my new databaseI thought the first one is more ideal since it is easier for other developers to maintain so I googled "laravel create migration …" then google returned me a bunch of packages to do these tasks, nice!
here is a couple of choices:
So I generated all the migrations in seconds, lovely!
Then I run php artisan migrate
!
CRASH!
Checked out the migrations, found that the generator didn't generate the codes properly. It missed some details, like lacking index, so I needed to go through each file to debug… which was not my purpose to use a tool so I tried the second solution, create tables by pure SQL
It is easier than I thought
I test a table and it worked properly, created exactly same table as the original without error
So I exported the table structure in SQL from phpMyAdmin manually (the total number of tables is still acceptable for me to do this).
Instead of creating a command to do this task, I still generated migrations matched to the tables since I would like to have the ROLLBACK feature in Laravel migration. Remember? We can create migrations in seconds by using one of the mentioned packages. Don't forget to edit .env
to switch to the original database, And after generating, switch back to the NEW database.
Here is my migration code. I put all the SQL in database/sql_migrations
but you can put them anywhere you like.
After all files are set, we can easily run php artisan migrate
to create tables, and php artisan migrate:rollback
to rollback.