I have a table with a default value already assigned. For an example we can look at the following:
Schema::create('users', function (Blueprint $table) { $table->increments('id')->unsigned(); $table->integer('active')->default(1); });
I now want to change my default value on the active field. I am expecting to do something like this:
if (Schema::hasTable('users')) { Schema::table('users', function (Blueprint $table) { if (Schema::hasColumn('users', 'active')) { $table->integer('active')->default(0); } }); }
But of course it tells me the column is already there. How can I simply update the default value of column x without dropping the column?
Foreign Keys Laravel also provides support for adding foreign key constraints to your tables: $table->integer('user_id')->unsigned(); $table->foreign('user_id')->references('id')->on('users'); In this example, we are stating that the user_id column references the id column on the users table.
This is how you do it, I have checked it and it works on my Laravel 4.2. $table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP')); Hope this helps.
You can use change()
method:
Schema::table('users', function ($table) { $table->integer('active')->default(0)->change(); });
Then run migrate
command.
Update
For Laravel 4 use something like this:
DB::statement('ALTER TABLE `users` CHANGE COLUMN `active` `active` INTEGER NOT NULL DEFAULT 0;');
Inside up()
method instead of Schema::table();
clause.
You have to call the change function to update the column
if (Schema::hasTable('users')) { Schema::table('users', function (Blueprint $table) { if (Schema::hasColumn('users', 'active')) { $table->integer('active')->default(0)->change(); } }); }
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