web-dev-qa-db-ja.com

Laravelマイグレーションで列をNULL不可にします

現在、テーブルnullableの特定の列を作成するための移行を書いています。 down関数については、もちろんこれらの列をnot nullableにしたいです。 スキーマビルダードキュメント を調べましたが、これを行う方法がわかりませんでした。

任意の助けをいただければ幸いです。

104
bilalq

Laravel 5より前は、スキーマビルダーを使用して既存のテーブル列を変更するLaravelネイティブの方法はありませんでした。これには生のクエリを使用する必要があります。

ただし、Laravel 5以降では次を使用できます。

$table->...->nullable(false)->change();
181
TLGreg

Laravel 5の時点では、これをネイティブに逆にすることができます。nullable()の引数としてfalseを渡すだけです。

例えば.

$table -> string('foo') -> nullable(false) -> change();
36
Matt McDonald

最初にこれを実行します:

composer require doctrine/dbal

次に、次のようにテーブルを変更する移行を作成します。

php artisan make:migration fix_whatever_table_name_here

public function up()
{
    Schema::table('table_name', function (Blueprint $table) {
        $table->type('column')->nullable(false)->change();
    });
}

public function down()
{
    Schema::table('table_name', function ($table) {
        $table->dropColumn('column');
    });
}
0
funerr