Create MySQL tables
Creating MySQL database tables from Laravel
To follow Laravel standards, We should create a table using Laravel artisan commands. It will help to other teammates automatically update database changes just with one command. To create a table use below command.
php artisan make:migration create_yourTableName_table
It will create a table and you can also check the migrate files in the below path
mylaravel\database\migrations\
Let's create sample table name called "posts"
php artisan make:migration create_posts_table
Creating "posts" Table
After run this command, Migration file will be created. you can check the migration folder
Migration file
Let's add some columns in the posts table
public function up()
{
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->string('slug');
$table->text('body');
$table->timestamp('publised_at')->nullable();
$table->timestamps();
});
}
before running migration, Let's see the MySQL database
Before running migrate
After running migration php artisan migrate
It will add some default Laravel migrations also, now check at database
posts table created
columns are added
Suppose If I want to add another column to the "posts" table. Like 'title' column.
In this case, you can simple run the migration command
php artisan make:migration add_title_to_posts_table
Creates one more migration file
Migration file
As discussed it creates one more migration file, now we need to add our "title" column here as well as we need to write down() method for drop the changes.
Add title column
run the migrate command again
Title column added
Will do this kind of approach if your project is on production. otherwise you can add "title" in "posts" migration file directly.
At the same way if want to undo the last migration. You can run
php artisan migrate:rollback
Undo the last migration
Now you can add the "title" column directly to "posts" migration file.
"title" column added at "posts" migration file.
But here, After add the "title" column in "posts" migration file. And run the
php artisan migrate
Nothing to migrate
it will run nothing, Because that migration file already read. so you need to rollback all tables once again.
php artisan migrate:rollback
Rollback all tables
and again need to run the command
php artisan migrate
now it will create all tables once again.
Note: every time you do this, all table data will be deleted.
Important: so that's when you are in production, you will be careful with this actions
So now, if you refresh MySQL tables, all tables are created.
All tables are created with my additional "title" column
php artisan migrate:fresh
this command will drop all the tables and create new fresh tables
Created all tables
Comments
Post a Comment
Thank you :)