Framework: El valor PREDETERMINADO en la migración de la tabla no se puede ejecutar si es una función

Creado en 22 nov. 2015  ·  3Comentarios  ·  Fuente: laravel/framework

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

Comentario más útil

Prueba con DB::raw :

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

Todos 3 comentarios

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.

¿Fue útil esta página
0 / 5 - 0 calificaciones