How to add new columns to the existing table in Laravel migration
Sometimes it is required to add new columns in Laravel tables. Today I will show you how to add new column or columns to the existing table in Laravel migration.
Imagine that, you have a table called users where the table structure is like this.
After migration and having data into the table, now maybe you want to add a new column to the users table called profile
. To add a new column, refresh database is not an ideal way. In this situation, you can create a new migration file to add a new column into the users table.
Add a single Column:
To add a new column to the existing table in Laravel, you need to add the following command in terminal.
php artisan make:migration add_profile_to_users
It will create a add_profile_to_users
file in migration folder. That should be like this-
class AddProfileToUsers extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->string('profile')->nullable();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('shop_users', function (Blueprint $table) {
$table->dropColumn(['profile']);
});
}
}
Now you just run the following migration command to add a new column in your table.
php artisan migrate
Now you should able to see a new column in your table, that should be like this.
Add multiple columns
If you need to add multiple columns, you need to add the following command in the terminal.
php artisan make:migration add_profile_and_bio_to_users
It will generate a add_profile_and_bio_to_users
file in migration folder. That contains the following link-
class AddProfileToUsers extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->string('profile')->nullable();
$table->string('bio')->nullable();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('shop_users', function (Blueprint $table) {
$table->dropColumn(['profile', 'bio']);
});
}
}
Finally, you need to run the following command to migrate that.
php artisan migrate
Hope it will work for you.