以下は私のファイルです2015_09_14_051851_create_orders_table.php。そして、$table->integer('category_id');
を新しいマイグレーションで文字列として変更したいと思います。
<?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');
}
}
更新:2018年10月31日、laravel 5.7で引き続き使用可能 https://laravel.com/docs/5.7/migrations#modifying-columns
既存のデータベースに何らかの変更を加えるには、移行でchange()
を使用して列タイプを変更できます。
これはあなたができることです
Schema::table('orders', function ($table) {
$table->string('category_id')->change();
});
ここで見つけることができる詳細については、composer.jsonにdoctrine/dbal依存関係を追加する必要があることに注意してください http:// laravel。 com/docs/5.1/migrations#modifying-columns
標準ソリューション は、タイプをTEXTからロングテキスト。
私はこのようにしなければなりませんでした:
public function up()
{
DB::statement('ALTER TABLE mytable MODIFY mycolumn LONGTEXT;');
}
public function down()
{
DB::statement('ALTER TABLE mytable MODIFY mycolumn TEXT;');
}
これはDoctrineの問題である可能性があります。詳細 here 。
別の方法は、string()メソッドを使用して、値をテキストタイプの最大長に設定することです。
Schema::table('mytable', function ($table) {
// Will set the type to LONGTEXT.
$table->string('mycolumn', 4294967295)->change();
});
2018年の解決策、まだ他の答えは有効ですが、依存関係を使用する必要はありません:
最初に、新しい移行を作成する必要があります。
php artisan make:migration change_appointment_time_column_type
次に、その移行ファイルup()
で、試してください:
Schema::table('appointments', function ($table) {
$table->string('time')->change();
});
サイズを変更しない場合、デフォルトはvarchar(191)
になりますが、フィールドのサイズを変更する場合:
Schema::table('appointments', function ($table) {
$table->string('time', 40)->change();
});
次に、次の方法でファイルを移行します。
php artisan migrate
docからの詳細 。
他のすべての答えは正しいしかし実行する前に
php artisan migrate
最初にこのコードを実行するようにしてください
composer require doctrine/dbal
このエラーを回避するには
RuntimeException:テーブル「items」の列を変更するには、Doctrine DBALが必要です。 「doctrine/dbal」をインストールします。
私にとって解決策は、nsignedをindexに置き換えるだけでした
これは完全なコードです:
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');
});