web-dev-qa-db-ja.com

laravel 5.6で列のデータ型を変更する方法は?

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();
    });
}
7
Imran Abbas

直接クエリを行う場合は、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;');
}
1
N69S

この機能を使用してこれを行うことができます。新しい移行を作成して列タイプを変更できます

public function up()
{
Schema::table('log_requests', function (Blueprint $table) {
    $table->longText('request')->change();
    $table->longText('response')->change();
});

これを機能させるには、doctrine/dbalをインストールする必要があります

composer require doctrine/dbal
0
Amit Sharma