Framework: 関数の場合、テーブル移行のDEFAULT値は実行できません

作成日 2015年11月22日  ·  3コメント  ·  ソース: laravel/framework

テーブル列のデフォルトとして関数名を指定すると、これは引用符で囲まれるため、実行時に関数は実行されず、文字列として保存されます。

幸い、UUID列にはこのタイプのデフォルトの文字列値を設定できないため、エラーが発生します。

Schema::create('products', function(Blueprint $table)
        {
            $table->uuid('id')->default('gen_random_uuid()')->primary('products_pkey');
            $table->string('name')->nullable();
            $table->string('max_projects')->nullable();
            $table->timestamps();
            $table->softDeletes();
        });

最も参考になるコメント

DB::raw試してみてください:

 $table->uuid('id')->default(DB::raw('gen_random_uuid()'))->primary('products_pkey');

全てのコメント3件

DB::raw試してみてください:

 $table->uuid('id')->default(DB::raw('gen_random_uuid()'))->primary('products_pkey');

MySQLでは関数をデフォルト値として使用することはできません。 定数でなければなりません。 UUIDを生成するには、トリガーを使用するか、手動で実行する必要があります。

gen_random_uuid()はPostgre関数です。

このページは役に立ちましたか?
0 / 5 - 0 評価