مشکات
3 سال پیش توسط مشکات مطرح شد
2 پاسخ

uuid در لاراول

سلام دوستان
خسته نباشید
من میخوام درون پروژه ام یک فیلد به اسم uuid داشته باشم که برام یه پسوورد تولید کنه
میخوام این فیلد در کنار فیلد id وجود داشته باشه
اما وقتی uuid رو با یک تابع در مایگریشنم مینویسم به ازای همه کاربراان uuidهای تکراری ایجاد میکنه
ممنون میشم اگر راهنماییم کنید

 $table->uuid('uuid')->default(str_shuffle('abcdefghijklmnopqrstuuwxvz'));

ثبت پرسش جدید
مجتبی دلشاد
تخصص : توسعه دهنده بک اند
@delshad 3 سال پیش آپدیت شد
0

کدی که شما در مایگریشن نوشتید برای کاری که در نظرتون هست انجام بشه کاملا اشتباهه. با اینکار زمان مایگریت یک رشته ایجاد میشه و جدول شما بعد از ایجاد هر رکورد از همون رشته استفاده میکنه
شما میتونید به اینصورت برای هر یوزر رشته رندوم ایجاد کنید :
ابتدا یه Trait با نام Uuid ایجاد کنید
بعد از ایجاد نیاز دارید که این پکیج رو نصب کنید :

https://github.com/ramsey/uuid

با دستور :

composer require ramsey/uuid

خب حالا کدهایی که باید درون trait نوشته باشه ه این صورت هست:

<?php

namespace App\Models\Traits;

use Ramsey\Uuid\Uuid as PackageUuid;

/**
 * Trait Uuid.
 */
trait Uuid
{
    /**
     * @param $query
     * @param $uuid
     *
     * @return mixed
     */
    public function scopeUuid($query, $uuid)
    {
        return $query->where($this->getUuidName(), $uuid);
    }

    /**
     * @return string
     */
    public function getUuidName()
    {
        return property_exists($this, 'uuidName') ? $this->uuidName : 'uuid';
    }

    /**
     * Use Laravel bootable traits.
     */
    protected static function bootUuid()
    {
        static::creating(function ($model) {
            $model->{$model->getUuidName()} = PackageUuid::uuid4()->toString();
        });
    }
}

حالا کافیه در مدل User این Trait رو use کنید
همچنین نیازی نیست داخل مایگریشن به uuid مقدار دیفالت بدید به این صورت نوشته بشه کافیه

            $table->uuid('uuid');

مشکات
تخصص : کاراموز
@meshkat315 3 سال پیش مطرح شد
1

@delshad
یه دنیا ازتون سپاسگزارم
روشی ک گفتین خیلی تمیز و عالی بود و من باهاش جواب گرفتم
خدا به علمتون برکت بده الهی
بازم ممنونم🌺☘️


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام