Press ESC to close

Cara Generate UUID di Laravel 11 dengan Mudah: Panduan Lengkap

Introduction

Halo Sobat Developer! Salah satu kebutuhan umum dalam pengembangan aplikasi web adalah menghasilkan Unique Identifier (ID) yang unik dan aman. Untuk itu, UUID (Universally Unique Identifier) sering kali menjadi pilihan utama. UUID adalah string yang panjang dan unik, yang memungkinkan setiap entitas dalam aplikasi Anda memiliki ID yang tidak akan bentrok, bahkan jika ada banyak instance yang berjalan di sistem yang berbeda.

Di Laravel 11, Anda dapat dengan mudah menghasilkan UUID menggunakan built-in support yang disediakan oleh framework ini. Dalam artikel ini, saya akan membahas bagaimana cara generate UUID di Laravel 11 dengan cara yang sangat sederhana. Mulai dari instalasi project Laravel, konfigurasi yang diperlukan, hingga contoh penggunaan UUID dalam model Laravel. Yuk, langsung saja kita mulai!

Langkah 1: Install Project Laravel 11

Sebelum kita mulai, pastikan Anda sudah menginstal Laravel. Jika belum, mari kita mulai dari awal dengan menginstal Laravel 11.

1.1 Install Laravel dengan Composer

Buka terminal atau command prompt di komputer Anda dan jalankan perintah berikut untuk membuat project Laravel baru:

composer create-project --prefer-dist laravel/laravel laravel-uuid

Perintah ini akan mengunduh dan menginstal Laravel versi terbaru (Laravel 11) dalam folder laravel-uuid. Setelah selesai, masuk ke dalam folder project Anda:

cd laravel-uuid

1.2 Jalankan Laravel Development Server

Setelah project terinstal, jalankan server Laravel dengan perintah:

php artisan serve

Buka browser dan kunjungi http://127.0.0.1:8000 untuk memastikan aplikasi Laravel Anda berjalan dengan baik.

Langkah 2: Menggunakan UUID di Laravel

Laravel mendukung UUID secara built-in. Anda bisa menggunakan UUID di Laravel dengan beberapa cara, seperti di model, route, atau migrasi. Di bagian ini, saya akan menjelaskan bagaimana cara menghasilkan UUID secara langsung menggunakan fungsi yang sudah disediakan oleh Laravel.

2.1 Menggunakan UUID dengan Str::uuid()

Laravel memiliki class Str yang menyediakan berbagai metode string, termasuk Str::uuid() yang bisa digunakan untuk menghasilkan UUID. Untuk menggunakan UUID, Anda cukup memanggil method ini di mana pun Anda membutuhkan UUID unik.

Untuk mencobanya, buka Tinker di terminal dengan perintah berikut:

php artisan tinker

Kemudian, jalankan perintah berikut untuk menghasilkan UUID:

use Illuminate\Support\Str;
Str::uuid();

Ini akan menghasilkan UUID yang unik, seperti berikut:

"c9f9f4c6-9861-4f91-8fd7-5d5b3458b564"

UUID yang dihasilkan di atas dapat digunakan di berbagai tempat dalam aplikasi Anda.

Langkah 3: Menggunakan UUID di Model Laravel

UUID sering kali digunakan sebagai primary key di database, menggantikan auto-increment integer ID yang biasanya digunakan oleh Laravel. Anda bisa mengonfigurasi model untuk menggunakan UUID sebagai primary key.

3.1 Buat Model dengan UUID

Sebagai contoh, mari kita buat model baru yang menggunakan UUID sebagai primary key. Jalankan perintah berikut untuk membuat model baru, misalnya model Product:

php artisan make:model Product

Buka file model Product.php yang berada di folder app/Models dan lakukan beberapa penyesuaian seperti berikut:

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Str;

class Product extends Model
{
    // Tentukan bahwa primary key menggunakan UUID
    protected $primaryKey = 'uuid';
    
    // Nonaktifkan auto increment (karena kita akan menggunakan UUID)
    public $incrementing = false;

    // Tentukan tipe data primary key
    protected $keyType = 'string';

    // Tambahkan UUID ke model saat pembuatan
    protected static function booted()
    {
        static::creating(function ($product) {
            $product->uuid = (string) Str::uuid();
        });
    }
}

Penjelasan kode:

  • protected $primaryKey = 'uuid';: Kita mengganti primary key dari default (id) menjadi uuid.
  • public $incrementing = false;: Karena UUID bukanlah auto-incrementing value, kita menonaktifkan fitur auto-increment di Laravel.
  • protected $keyType = 'string';: Karena UUID adalah string, kita menetapkan tipe primary key menjadi string.
  • static::creating(): Ini adalah event model yang dipanggil setiap kali model Product baru dibuat. Kita memanfaatkan event ini untuk menambahkan UUID saat record baru dibuat.

3.2 Buat Migrasi untuk products Table

Sekarang, kita perlu membuat migrasi untuk tabel products yang akan menyimpan UUID sebagai primary key. Jalankan perintah berikut untuk membuat migrasi:

php artisan make:migration create_products_table

Buka file migrasi yang baru saja dibuat di folder database/migrations dan ubah struktur tabel seperti berikut:

public function up()
{
    Schema::create('products', function (Blueprint $table) {
        $table->string('uuid')->primary(); // Menggunakan UUID sebagai primary key
        $table->string('name');
        $table->decimal('price', 8, 2);
        $table->timestamps();
    });
}

Setelah itu, jalankan perintah berikut untuk menjalankan migrasi:

php artisan migrate

Dengan migrasi ini, tabel products akan dibuat dengan kolom uuid sebagai primary key.

Langkah 4: Menambahkan Data ke Tabel dengan UUID

Sekarang, mari kita coba untuk menambahkan data ke tabel products dan memastikan UUID secara otomatis di-generate. Anda bisa menggunakan Tinker untuk menambah data ke database:

php artisan tinker

Kemudian, jalankan kode berikut untuk membuat instance Product baru:

$product = App\Models\Product::create([
    'name' => 'Product A',
    'price' => 99.99
]);

echo $product->uuid;

Kode di atas akan mencetak UUID yang dihasilkan untuk produk baru yang telah disimpan ke database.

Langkah 5: Menampilkan UUID di Controller dan View

Sekarang, mari kita buat controller untuk menampilkan produk beserta UUID-nya di aplikasi. Jalankan perintah berikut untuk membuat controller:

php artisan make:controller ProductController

Buka file controller ProductController.php di folder app/Http/Controllers dan tambahkan kode berikut:

namespace App\Http\Controllers;

use App\Models\Product;

class ProductController extends Controller
{
    public function index()
    {
        // Ambil semua produk
        $products = Product::all();

        // Kirim data ke view
        return view('products.index', compact('products'));
    }
}

Buat view baru di resources/views/products/index.blade.php untuk menampilkan data produk, termasuk UUID:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Daftar Produk</title>
</head>
<body>
    <h1>Daftar Produk</h1>

    <table border="1" cellspacing="0" cellpadding="5">
        <thead>
            <tr>
                <th>UUID</th>
                <th>Nama</th>
                <th>Harga</th>
            </tr>
        </thead>
        <tbody>
            @foreach ($products as $product)
                <tr>
                    <td>{{ $product->uuid }}</td>
                    <td>{{ $product->name }}</td>
                    <td>{{ $product->price }}</td>
                </tr>
            @endforeach
        </tbody>
    </table>
</body>
</html>

Terakhir, tambahkan route di routes/web.php untuk mengakses halaman produk:

use App\Http\Controllers\ProductController;

Route::get('products', [ProductController::class, 'index']);

Sekarang, jika Anda mengunjungi http://localhost:8000/products, Anda akan melihat daftar produk lengkap dengan UUID-nya.

Kesimpulan

Membuat dan menggunakan UUID di Laravel 11 sangat mudah dan dapat membantu memastikan bahwa ID yang Anda gunakan dalam aplikasi Anda tetap unik dan aman. Dalam artikel ini, kita telah membahas cara generate UUID menggunakan Str::uuid(), bagaimana menggunakannya sebagai primary key di model Laravel, serta bagaimana menambah dan menampilkan data dengan UUID. Dengan mengikuti langkah-langkah ini, Anda dapat meningkatkan integritas data dan membuat aplikasi Anda lebih fleksibel dalam menangani data unik.

Semoga artikel ini bermanfaat dan memudahkan Anda dalam menggunakan UUID di Laravel 11. Selamat mencoba!

Leave a Reply

Your email address will not be published. Required fields are marked *