Following is my file 2015_09_14_051851_create_orders_table.php. And I want to change $table->integer('category_id');
as a string with new migration.
<?php use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreateOrdersTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('orders', function(Blueprint $table) { $table->increments('id'); $table->string('num'); $table->integer('user_id'); $table->text('store_name'); $table->integer('store_name_publication'); $table->string('postal_code', 255); $table->string('phone_number', 255); $table->text('title'); $table->text('description'); $table->string('list_image_filename1', 255); $table->string('list_image_filename2', 255)->nullable(); $table->string('list_image_filename3', 255)->nullable(); $table->string('list_image_filename4', 255)->nullable(); $table->string('list_image_filename5', 255)->nullable(); $table->integer('term'); $table->datetime('state0_at')->nullable(); $table->datetime('state1_at')->nullable(); $table->datetime('state2_at')->nullable(); $table->datetime('state3_at')->nullable(); $table->datetime('state4_at')->nullable(); $table->datetime('state5_at')->nullable(); $table->datetime('state6_at')->nullable(); $table->datetime('state7_at')->nullable(); $table->datetime('state8_at')->nullable(); $table->datetime('state9_at')->nullable(); $table->datetime('state10_at')->nullable(); $table->integer('category_id'); $table->integer('target_customer_sex'); $table->integer('target_customer_age'); $table->integer('payment_order'); $table->integer('num_comment'); $table->integer('num_view'); $table->string('num_pop'); $table->integer('money'); $table->integer('point'); $table->datetime('closed_at'); $table->timestamps(); $table->softDeletes(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::drop('orders'); } }
To rename a column, you may use the renameColumn method on the Schema builder. Before renaming a column, be sure to add the doctrine/dbal dependency to your composer. json file: Schema::table('users', function (Blueprint $table) { $table->renameColumn('from', 'to'); });
Yes, you can name them however you want, but they will run in alphabetical order (which is why laravel timestamps them). Also you can change a migrations name after the fact (you've already run the migration).
update: 31 Oct 2018, Still usable on laravel 5.7 https://laravel.com/docs/5.7/migrations#modifying-columns
To make some change to existing db, you can modify column type by using change()
in migration.
This is what you could do
Schema::table('orders', function ($table) { $table->string('category_id')->change(); });
please note you need to add doctrine/dbal dependency to composer.json for more information you can find it here http://laravel.com/docs/5.1/migrations#modifying-columns
The standard solution didn't work for me, when changing the type from TEXT to LONGTEXT.
I had to it like this:
public function up() { DB::statement('ALTER TABLE mytable MODIFY mycolumn LONGTEXT;'); } public function down() { DB::statement('ALTER TABLE mytable MODIFY mycolumn TEXT;'); }
This could be a Doctrine issue. More information here.
Another way to do it is to use the string() method, and set the value to the text type max length:
Schema::table('mytable', function ($table) { // Will set the type to LONGTEXT. $table->string('mycolumn', 4294967295)->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