راکت
حل شده

uuid در لاراول

2 پاسخ

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

 $table->uuid('uuid')->default(str_shuffle('abcdefghijklmnopqrstuuwxvz'));
ثبت پرسش جدید

پاسخ‌ها

2
مجتبی دلشاد
مجتبی دلشاد
@delshad

تخصص: توسعه دهنده بک اند

بهترین پاسخ

کدی که شما در مایگریشن نوشتید برای کاری که در نظرتون هست انجام بشه کاملا اشتباهه. با اینکار زمان مایگریت یک رشته ایجاد میشه و جدول شما بعد از ایجاد هر رکورد از همون رشته استفاده میکنه
شما میتونید به اینصورت برای هر یوزر رشته رندوم ایجاد کنید :
ابتدا یه 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

تخصص: کاراموز

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

شاید پاسخ شما همین‌جا باشد

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

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