Cuando especifico un nombre de función como una columna de tabla predeterminada, esto se envuelve entre comillas, por lo que cuando se ejecuta la función no se ejecuta, se guarda como una cadena.
Afortunadamente, esto da un error porque UUID col no puede tener un valor de cadena predeterminado de este 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();
});
Prueba con DB::raw
:
$table->uuid('id')->default(DB::raw('gen_random_uuid()'))->primary('products_pkey');
No puede usar una función como valor predeterminado en MySQL. Tiene que ser una constante. Para generar un UUID, tendría que usar un disparador o hacerlo manualmente.
gen_random_uuid()
es una función de Postgre.
Comentario más útil
Prueba con
DB::raw
: