Skip to content

niomictomi/uuid-for-laravel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 

Repository files navigation

Build Status Apps Latest Stable Version License

uuid-for-laravel

Menggunakan UUID sebagai pengganti ID Laravel

Persiapan

Untuk menggunakan UUD sebagai pengganti ID, maka yang harus dipersiapkan adalah hal-hal sebagai berikut:

  1. Model
  2. Database
  3. Traits (fungsinya sama kayak Helper, fungsi ini dapat dipakai difungsi-fungsi lainnya)

Setting

  1. Buat model dan migration Blog

    $ php artisan make:model Blog -m
  2. Setting Database

    Schema::create('blogs', function (Blueprint $table) {
             $table->uuid('id')->primary()->unique();
             $table->string('title');
             $table->timestamps();
         });

    yang menjadi perhatian bagian uuid disetting sebagai primary dan unique.

  3. Setting Model

    <?php
    
     namespace App\Models;
    
     use Illuminate\Database\Eloquent\Model;
     use Illuminate\Database\Eloquent\Factories\HasFactory;
    
     class Blog extends Model
     {
         use HasFactory;
    
         /**
         * The attributes that are mass assignable.
         *
         * @var array
         */
         protected $fillable = ['title', 'id'];
    
         protected $primaryKey = 'id';
    
         public $incrementing = false;
    
         protected $keyType = 'string';
     }
    

    increment disetting false, karena tidak menggunakan ID lagi.

  4. Buat Traits Saya membuat file trait HasUuid sebagai file yang berfungsi untuk men-generate UUID pada folder Model\Traits. Berikut potongan kode nya:

    <?php
    
     namespace App\Models\Traits;
    
     use Illuminate\Support\Str;
    
     trait HasUuid
     {
         /**
         * Boot the Has Uuid trait for the model.
         *
         * @return void
         */
         public static function bootHasUuid()
         {
             static::creating(function ($model) {
                 if (empty($model->{$model->getKeyName()})) {
                     $model->{$model->getKeyName()} = Str::uuid();
                 }
             });
         }
     }
    
  5. Menambahkan file Trait HasUuid ke dalam Model Blog

    yaitu memanggil HasUuid dengan use HasUuid dan menambahkan use App\Models\Traits\HasUuid;.

    <?php
    
     namespace App\Models\Test;
    
     use App\Models\Traits\HasUuid;
     use Illuminate\Database\Eloquent\Model;
     use Illuminate\Database\Eloquent\Factories\HasFactory;
    
     class BlogTest extends Model
     {
         use HasFactory, HasUuid;
    
         /**
         * The attributes that are mass assignable.
         *
         * @var array
         */
         protected $fillable = ['title', 'id'];
    
         protected $primaryKey = 'id';
    
         public $incrementing = false;
    
         protected $keyType = 'string';
     }
    

Simulasi

Dengan menggunakan laravel tinker php artisan tinker, kita menambahkan title dengan value "test 2".

$ php artisan tinker
Psy Shell v0.10.9 (PHP 7.3.31 — cli) by Justin Hileman
>>> BlogTest::create(['title' => 'test 2']);

dan hasilnya sebagai berikut:

[!] Aliasing 'BlogTest' to 'App\Models\Blog' for this Tinker session.
=> App\Models\Blog {#4617
     title: "test 2",
     id: Ramsey\Uuid\Lazy\LazyUuidFromString {#4622
       uuid: "98ecfa52-8953-4476-b835-cc073e53db42",
     },
     updated_at: "2021-12-05 08:39:21",
     created_at: "2021-12-05 08:39:21",
   }

Penutup

Untuk selanjutnya bisa dikembangkan sesuai kebutuhan codingan anda.

About

Menggunakan UUID sebagai pengganti ID Laravel

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages