Advertisement

Responsive Advertisement

Contoh Implementasi ENUM di laravel

Enum Order Status di Laravel

Berikut adalah cara membuat enum untuk Order Status di Laravel:

1. Membuat Enum OrderStatus

Jalankan perintah berikut untuk membuat file enum:

php artisan make:enum OrderStatus

Enum akan dibuat di direktori app/Enums. Jika direktori Enums belum ada, Anda bisa membuatnya secara manual.

2. Implementasi Enum OrderStatus

Edit file OrderStatus.php seperti berikut:

<?php

namespace App\Enums;

enum OrderStatus: string
{
    case PENDING = 'pending';
    case CONFIRMED = 'confirmed';
    case PROCESSING = 'processing';
    case SHIPPED = 'shipped';
    case DELIVERED = 'delivered';
    case COMPLETED = 'completed';
    case CANCELLED = 'cancelled';
    case RETURNED = 'returned';

    public function label(): string
    {
        return match ($this) {
            self::PENDING => 'Pending',
            self::CONFIRMED => 'Confirmed',
            self::PROCESSING => 'Processing',
            self::SHIPPED => 'Shipped',
            self::DELIVERED => 'Delivered',
            self::COMPLETED => 'Completed',
            self::CANCELLED => 'Cancelled',
            self::RETURNED => 'Returned',
        };
    }
}

3. Contoh Penggunaan

a. Menyimpan Status ke Database

Pastikan kolom status pada tabel Anda adalah tipe string:

$table->string('status');

Simpan status menggunakan enum:

use App\Enums\OrderStatus;

// Menyimpan status
$order->status = OrderStatus::PENDING->value;
$order->save();

b. Membaca Status dari Database

$status = OrderStatus::from($order->status);
echo $status->label(); // Output: Pending

c. Menampilkan Pilihan untuk Dropdown

Untuk menampilkan semua pilihan enum:

use App\Enums\OrderStatus;

$options = collect(OrderStatus::cases())->mapWithKeys(fn($status) => [
    $status->value => $status->label(),
]);

return $options; // ['pending' => 'Pending', 'confirmed' => 'Confirmed', ...]

4. Validasi Input

Untuk memvalidasi status yang diterima pada request:

$request->validate([
    'status' => ['required', Rule::in(array_column(OrderStatus::cases(), 'value'))],
]);





Enum Shipping Status di Laravel

Berikut adalah cara membuat enum untuk Shipping Status:

1. Membuat Enum ShippingStatus

Jalankan perintah untuk membuat file enum:

php artisan make:enum ShippingStatus

2. Implementasi Enum ShippingStatus

Edit file ShippingStatus.php seperti berikut:

<?php

namespace App\Enums;

enum ShippingStatus: string
{
    case PENDING = 'pending';
    case IN_TRANSIT = 'in_transit';
    case OUT_FOR_DELIVERY = 'out_for_delivery';
    case DELIVERED = 'delivered';

    public function label(): string
    {
        return match ($this) {
            self::PENDING => 'Pending Shipment',
            self::IN_TRANSIT => 'In Transit',
            self::OUT_FOR_DELIVERY => 'Out for Delivery',
            self::DELIVERED => 'Delivered',
        };
    }
}

3. Contoh Penggunaan

a. Menyimpan Status ke Database

Pastikan kolom status pada tabel Anda adalah tipe string:

$table->string('shipping_status');

Simpan status pengiriman menggunakan enum:

use App\Enums\ShippingStatus;

// Menyimpan status
$order->shipping_status = ShippingStatus::PENDING->value;
$order->save();

b. Membaca Status dari Database

$shippingStatus = ShippingStatus::from($order->shipping_status);
echo $shippingStatus->label(); // Output: Pending Shipment

c. Menampilkan Pilihan untuk Dropdown

use App\Enums\ShippingStatus;

$options = collect(ShippingStatus::cases())->mapWithKeys(fn($status) => [
    $status->value => $status->label(),
]);

return $options; 
// Output: ['pending' => 'Pending Shipment', 'in_transit' => 'In Transit', ...]

4. Validasi Input

Untuk memvalidasi status yang diterima pada request:

$request->validate([
    'shipping_status' => ['required', Rule::in(array_column(ShippingStatus::cases(), 'value'))],
]);

Posting Komentar

0 Komentar