laravel 5.6を使用して列のデータ型を変更しようとしています。
2つの列のデータ型がtext
であるテーブルがありますが、それをlongtext
に変更したいと思います。私は以下を試しました:
composer require doctrine/dbal
composer dump-autoload
...次に移行を作成しました2019_12_23_065820_change_response_column_data_type_in_log_requests_table.php
ために log_requests
テーブル。
...そして次のスクリプト
public function up()
{
Schema::table('log_requests', function (Blueprint $table) {
$table->longText('request')->nullable()->change();
$table->longText('response')->nullable()->change();
});
}
ただし、列のデータ型は変更されません。誰かが私を案内できますか?修正できるように、どこが間違っていますか?ありがとうございました。
[〜#〜]編集済み[〜#〜]
コメントで移行をリクエストした後、移行スクリプトを追加しました:
public function up()
{
Schema::create('log_requests', function (Blueprint $table) {
$table->increments('id');
$table->bigInteger('user_id')->nullable()->unsigned();
$table->string('api_name')->nullable();
$table->string('url')->nullable();
$table->string('method')->nullable();
$table->string('ip_address')->nullable();
$table->string('status_code')->nullable();
$table->string('duration')->nullable();
$table->text('request')->nullable();
$table->text('response')->nullable();
$table->timestamps();
});
}
直接クエリを行う場合は、Dbalの使用を回避できます
public function up()
{
\DB::statement('alter table log_requests modify request longtext null;');
\DB::statement('alter table log_requests modify response longtext null;');
}
public function down()
{
\DB::statement('alter table log_requests modify request text null;');
\DB::statement('alter table log_requests modify response text null;');
}
この機能を使用してこれを行うことができます。新しい移行を作成して列タイプを変更できます
public function up()
{
Schema::table('log_requests', function (Blueprint $table) {
$table->longText('request')->change();
$table->longText('response')->change();
});
これを機能させるには、doctrine/dbalをインストールする必要があります
composer require doctrine/dbal