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();
});
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.
Comentários muito úteis
Experimente com
DB::raw
: