Framework: La valeur DEFAULT dans la migration de table ne peut pas être exécutée s'il s'agit d'une fonction

Créé le 22 nov. 2015  ·  3Commentaires  ·  Source: laravel/framework

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

Commentaire le plus utile

Essayez avec DB::raw :

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

Tous les 3 commentaires

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.

Cette page vous a été utile?
0 / 5 - 0 notes