Lorsque je spécifie un nom de fonction comme colonne de table par défaut, il est entouré de guillemets. Ainsi, lorsqu'elle est exécutée, la fonction n'est pas exécutée, elle est enregistrée sous forme de chaîne.
Cela donne heureusement une erreur car UUID col ne peut pas avoir de valeur de chaîne par défaut de ce type.
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();
});
Essayez avec DB::raw
:
$table->uuid('id')->default(DB::raw('gen_random_uuid()'))->primary('products_pkey');
Vous ne pouvez pas utiliser une fonction comme valeur par défaut dans MySQL. Ce doit être une constante. Pour générer un UUID, vous devez soit utiliser un déclencheur, soit le faire manuellement.
gen_random_uuid()
est une fonction Postgre.
Commentaire le plus utile
Essayez avec
DB::raw
: