I can't figure out how to add a new column to my existing database table using the Laravel framework.
I tried to edit the migration file using...
<?php public function up() { Schema::create('users', function ($table) { $table->integer("paid"); }); }
In terminal, I execute php artisan migrate:install
and migrate
.
How do I add new columns?
To create a migration, you may use the migrate:make command on the Artisan CLI. Use a specific name to avoid clashing with existing models
for Laravel 5+:
php artisan make:migration add_paid_to_users_table --table=users
for Laravel 3:
php artisan migrate:make add_paid_to_users
You then need to use the Schema::table()
method (as you're accessing an existing table, not creating a new one). And you can add a column like this:
public function up() { Schema::table('users', function($table) { $table->integer('paid'); }); }
and don't forget to add the rollback option:
public function down() { Schema::table('users', function($table) { $table->dropColumn('paid'); }); }
Then you can run your migrations:
php artisan migrate
This is all well covered in the documentation for both Laravel 4 / Laravel 5:
And for Laravel 3:
Edit:
use $table->integer('paid')->after('whichever_column');
to add this field after specific column.
I'll add on to mike3875's answer for future readers using Laravel 5.1 and onward.
To make things quicker, you can use the flag "--table" like this:
php artisan make:migration add_paid_to_users --table="users"
This will add the up
and down
method content automatically:
/** * Run the migrations. * * @return void */ public function up() { Schema::table('users', function (Blueprint $table) { // }); }
Similarily, you can use the --create["table_name"]
option when creating new migrations which will add more boilerplate to your migrations. Small point, but helpful when doing loads of them!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With