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'))],
]);
0 Komentar