una tabla modificar migrar migraciones migracion especifica ejecutar devolver campo cambiar alterar agregar php laravel migration

php - modificar - Cambio de tipo de campo de la tabla de migración de Laravel



modificar migraciones laravel (4)

La solución estándar no funcionó para mí, al cambiar el tipo de TEXTO a LONGTEXT .

Lo tuve así:

public function up() { DB::statement(''ALTER TABLE mytable MODIFY mycolumn LONGTEXT;''); } public function down() { DB::statement(''ALTER TABLE mytable MODIFY mycolumn TEXT;''); }

Esto podría ser un problema de Doctrine. Más información here .

Otra forma de hacerlo es usar el método string () y establecer el valor en la longitud máxima del tipo de texto:

Schema::table(''mytable'', function ($table) { // Will set the type to LONGTEXT. $table->string(''mycolumn'', 4294967295)->change(); });

A continuación se encuentra mi archivo 2015_09_14_051851_create_orders_table.php . Y quiero cambiar $table->integer(''category_id''); como una cadena con nueva migración.

<?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''); } }


Para mí la solución fue simplemente reemplazar sin firmar con índice.

Este es el código completo:

Schema::create(''champions_overview'',function (Blueprint $table){ $table->engine = ''InnoDB''; $table->increments(''id''); $table->integer(''cid'')->index(); $table->longText(''name''); }); Schema::create(''champions_stats'',function (Blueprint $table){ $table->engine = ''InnoDB''; $table->increments(''id''); $table->integer(''championd_id'')->index(); $table->foreign(''championd_id'', ''ch_id'')->references(''cid'')->on(''champions_overview''); });


Solución 2018, otras respuestas son válidas, pero no necesita usar ninguna dependencia :

Primero tienes que crear una nueva migración:

php artisan make:migration change_appointment_time_column_type

Luego en ese archivo de migración up() , intente:

Schema::table(''appointments'', function ($table) { $table->string(''time'')->change(); });

Si no cambia el tamaño, el valor por defecto será varchar(191) pero si desea cambiar el tamaño del campo:

Schema::table(''appointments'', function ($table) { $table->string(''time'', 40)->change(); });

Luego migre el archivo por:

php artisan migrate

Más información del doc .


actualización: 31 de octubre de 2018, todavía se puede utilizar en laravel 5.7 https://laravel.com/docs/5.7/migrations#modifying-columns

Para realizar algún cambio en la base de datos existente, puede modificar el tipo de columna utilizando change() en la migración.

Esto es lo que podrías hacer

Schema::table(''orders'', function ($table) { $table->string(''category_id'')->change(); });

tenga en cuenta que necesita agregar la dependencia de doctrine / dbal a composer.json para obtener más información, puede encontrarla aquí http://laravel.com/docs/5.1/migrations#modifying-columns