Framework: O valor DEFAULT na migração da tabela não pode ser executado se for uma função

Criado em 22 nov. 2015  ·  3Comentários  ·  Fonte: laravel/framework

Quando eu especifico um nome de função como um padrão de coluna da tabela, isso é colocado entre aspas para que, quando executada, a função não seja executada, é salva como uma string.

Felizmente, isso dá um erro porque UUID col não pode ter um valor de string padrão desse tipo.

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

Comentários muito úteis

Experimente com DB::raw :

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

Todos 3 comentários

Experimente com DB::raw :

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

Você não pode usar uma função como valor padrão no MySQL. Tem que ser uma constante. Para gerar um UUID, você teria que usar um gatilho ou fazê-lo manualmente.

gen_random_uuid() é uma função Postgre.

Esta página foi útil?
0 / 5 - 0 avaliações