In this tutorial you will learn about the How to Add a Column or Columns To Existing Table In Laravel and its application with practical example.
In this How to Add a Column or Columns To Existing Table In Laravel tutorial, I will show you how to add a culumn or columns to existing table in laravel. In this tutorial you will learn add one or multiple columns to database table using migration in laravel. In this article I will show you different ways you can alter existing table schema using migrations in laravel.
How to Add a Column or Columns To Existing Table In Laravel
In this step by step guide I will demonstrate you how to add new columns or columns to an existing table using Laravel migration.
Laravel Migration:
- Add a single Column an existing table
- Add Multiple Columns in Existing Table
- Available Column Types
Add a single Column an existing table
Below is the example command to add single column to existing table.
1 |
php artisan make:migration add_type_to_notes |
It will create an add_type_to_notes file in the migration folder. It should be like this-
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
<?php use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class AddTypeToNotes extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::table('notes', function (Blueprint $table) { $table->string('note_type')->nullable(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::table('notes', function (Blueprint $table) { $table->dropColumn(['note_type']); }); } } |
Run Migration Command
Now, run the following command to migrate table schema,
1 |
php artisan migrate |
Add Multiple Columns in Existing Table
Below is the example command to add multiple column to existing table.
1 |
php artisan make:migration add_multiple_column_to_notes |
The above command will create a migration file, so go to database/migration folder and open your file and add column according to you:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
<?php use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class AddMultipleColumnToNotes extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::table('notes', function (Blueprint $table) { $table->string('short_description')->nullable(); $table->string('type')->nullable(); $table->string('long_description')->nullable(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::table('notes', function (Blueprint $table) { $table->dropColumn(['short_description', 'type', 'long_description']); }); } } |
Finally, run the below-given command for adding columns in your database table:
1 |
php artisan migrate |
Available Column Types
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
Command Description $table->bigIncrements('id'); Auto-incrementing UNSIGNED BIGINT (primary key) equivalent column. $table->bigInteger('votes'); BIGINT equivalent column. $table->binary('data'); BLOB equivalent column. $table->boolean('confirmed'); BOOLEAN equivalent column. $table->char('name', 100); CHAR equivalent column with an optional length. $table->date('created_at'); DATE equivalent column. $table->dateTime('created_at'); DATETIME equivalent column. $table->dateTimeTz('created_at'); DATETIME (with timezone) equivalent column. $table->decimal('amount', 8, 2); DECIMAL equivalent column with a precision (total digits) and scale (decimal digits). $table->double('amount', 8, 2); DOUBLE equivalent column with a precision (total digits) and scale (decimal digits). $table->enum('level', ['easy', 'hard']); ENUM equivalent column. $table->float('amount', 8, 2); FLOAT equivalent column with a precision (total digits) and scale (decimal digits). $table->geometry('positions'); GEOMETRY equivalent column. $table->geometryCollection('positions'); GEOMETRYCOLLECTION equivalent column. $table->increments('id'); Auto-incrementing UNSIGNED INTEGER (primary key) equivalent column. $table->integer('votes'); INTEGER equivalent column. $table->ipAddress('visitor'); IP address equivalent column. $table->json('options'); JSON equivalent column. $table->jsonb('options'); JSONB equivalent column. $table->lineString('positions'); LINESTRING equivalent column. $table->longText('description'); LONGTEXT equivalent column. $table->macAddress('device'); MAC address equivalent column. $table->mediumIncrements('id'); Auto-incrementing UNSIGNED MEDIUMINT (primary key) equivalent column. $table->mediumInteger('votes'); MEDIUMINT equivalent column. $table->mediumText('description'); MEDIUMTEXT equivalent column. $table->morphs('taggable'); Adds taggable_id UNSIGNED BIGINT and taggable_type VARCHAR equivalent columns. $table->uuidMorphs('taggable'); Adds taggable_id CHAR(36) and taggable_type VARCHAR(255) UUID equivalent columns. $table->multiLineString('positions'); MULTILINESTRING equivalent column. $table->multiPoint('positions'); MULTIPOINT equivalent column. $table->multiPolygon('positions'); MULTIPOLYGON equivalent column. $table->nullableMorphs('taggable'); Adds nullable versions of morphs() columns. $table->nullableUuidMorphs('taggable'); Adds nullable versions of uuidMorphs() columns. $table->nullableTimestamps(); Alias of timestamps() method. $table->point('position'); POINT equivalent column. $table->polygon('positions'); POLYGON equivalent column. $table->rememberToken(); Adds a nullable remember_token VARCHAR(100) equivalent column. $table->set('flavors', ['strawberry', 'vanilla']); SET equivalent column. $table->smallIncrements('id'); Auto-incrementing UNSIGNED SMALLINT (primary key) equivalent column. $table->smallInteger('votes'); SMALLINT equivalent column. $table->softDeletes(); Adds a nullable deleted_at TIMESTAMP equivalent column for soft deletes. $table->softDeletesTz(); Adds a nullable deleted_at TIMESTAMP (with timezone) equivalent column for soft deletes. $table->string('name', 100); VARCHAR equivalent column with a optional length. $table->text('description'); TEXT equivalent column. $table->time('sunrise'); TIME equivalent column. $table->timeTz('sunrise'); TIME (with timezone) equivalent column. $table->timestamp('added_on'); TIMESTAMP equivalent column. $table->timestampTz('added_on'); TIMESTAMP (with timezone) equivalent column. $table->timestamps(); Adds nullable created_at and updated_at TIMESTAMP equivalent columns. $table->timestampsTz(); Adds nullable created_at and updated_at TIMESTAMP (with timezone) equivalent columns. $table->tinyIncrements('id'); Auto-incrementing UNSIGNED TINYINT (primary key) equivalent column. $table->tinyInteger('votes'); TINYINT equivalent column. $table->unsignedBigInteger('votes'); UNSIGNED BIGINT equivalent column. $table->unsignedDecimal('amount', 8, 2); UNSIGNED DECIMAL equivalent column with a precision (total digits) and scale (decimal digits). $table->unsignedInteger('votes'); UNSIGNED INTEGER equivalent column. $table->unsignedMediumInteger('votes'); UNSIGNED MEDIUMINT equivalent column. $table->unsignedSmallInteger('votes'); UNSIGNED SMALLINT equivalent column. $table->unsignedTinyInteger('votes'); UNSIGNED TINYINT equivalent column. $table->uuid('id'); UUID equivalent column. $table->year('birth_year'); YEAR equivalent column. |