عندما أحدد اسم دالة كعمود افتراضي في الجدول ، يتم التفاف هذا في علامات اقتباس ، لذلك عند تنفيذ الوظيفة لا يتم تشغيلها ، يتم حفظها كسلسلة.
هذا يعطي خطأ لحسن الحظ لأن UUID col لا يمكن أن تحتوي على قيمة سلسلة افتراضية من هذا النوع.
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();
});
جرب بـ DB::raw
:
$table->uuid('id')->default(DB::raw('gen_random_uuid()'))->primary('products_pkey');
لا يمكنك استخدام دالة كقيمة افتراضية في MySQL. يجب أن تكون ثابتة. لإنشاء UUID ، يجب عليك إما استخدام مشغل أو القيام بذلك يدويًا.
gen_random_uuid()
هي وظيفة Postgre.
التعليق الأكثر فائدة
جرب بـ
DB::raw
: