اذهب إلى المحتوى

السؤال

نشر

أحاول توليد أرقام معرّفة فريدة في لارافل غير الموجودة كمفتاح أولي في جدول قاعدة البيانات، وحاولت استخدام التابع:

$uuid = Uuid::generate();

ولكنه يعيد غرض Object فارغ دون أي قيمة.

حاولت أيضاً تمرير قيمة للتابع generate كرقم ولكن نفس النتيجة.

كيف يمكنني تحقيق ذلك؟

Recommended Posts

  • 0
نشر

لانعيد الغرض مباشرة من uuid إنما الخاصية string منه كالتالي:

$uuid = Uuid::generate()->string;

// أو


use Illuminate\Support\Str;

$uuid = Str::uuid()->toString();

الخاصية string تعيد المعرف على شكل نص، يمكن قراءة الخاصية time التي تعيد الوقت:

Uuid::generate()->time;

 

  • 0
نشر

بداية يجب عليك إنشاء الحقل و تعيينه كمفتاح أولي بملف التهجير الخاص بالجدول المعني على هذا النحو : 

Schema::create('users', function (Blueprint $table) {
            $table->uuid('id')->unique()->primary();

            $table->string('name');
            $table->string('email')->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
}

لاحظ أن العمود id لا يملك أي قيمة افتراضية و لذلك يجب تعيين ذلك مع كل طلب : 

App\Models\User::create([
     'id' => $uuid,
     'name'=> 'Hsoub',
     'email'=> 'Academy',
     'password'=> Illuminate\Support\Facades\Hash::make('HsoubAcademy'),
]);

و لإختصار الأمر و توليد معرف فريد مع كل استعلام إدراج لصف جديد نحتاج الاستماع للحدث creating ضمن النموذج المستهدف ,وليكن App\Models\User/php , ضمن الثابت boot  على هذا النحو : 

public static function boot()
{
   parent::boot();

   self::creating(function($model){
        $model->uuid = $uuid;
   });

}

و لتعيين قيمة للمتغير uuid يمكنك إستعمال المساعد Str في لارافل مثل ما شرح المدربان أو يمكنك إستعمال أحد هاته الحزم : webpatser/laravel-uuid أو ramsey/uuid مثلا . كما يمكنك إنشاء مساعدك الخاص الذي يقوم بتوليد معرفات فريدة وفق منطق معين .

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...