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

توليد أرقام فريدة UUID في لارافل

Amir Alsaeed

السؤال

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

$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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...