2 Min Read

Menggunakan Package Enum Laravel

iman-sugirman Iman Sugirman

Dalam menggunakan package baiknya kita melihat dulu untuk kebutuhan kita dan jangan asal install karena akan menyebabkan beban yang berat untuk aplikasi laravel anda. Dan saya biasanya akan memakai package laravel yang sederhana saja, sesuai kebutuhan dari projectnya. Untuk menggunakan enum memang cukup lumayan ribet di laravel makanya saya ingin memudahkan pekerjaan dengan package.

Perlu diketahui, jika memang anda rajin maka mending membuat package sendiri atau membuat helper sendiri ketimbang memakai package orang lain karena fitur dengan menggunakan package lain biasanya ada banyak kegunaan melebihi apa yang kita butuhkan.

Menginstall Package Enum Laravel

Baiklah kita akan memulainya sekarang, Install package enum laravel menggunakan Laravel Enum Package.

composer require mad-web/laravel-enum

Lalu berikut cara Penggunaannya, misal anda ingin menambahkan kolom status di table users maka buatlah enumnya seperti ini contohnya :

php artisan make:enum UserStatusEnum

atau jika anda ingin menambahkan argumen lain biar lebih cepat bisa menggunakan :

php artisan make:enum UserStatusEnum Active=active Pending=pending

dan akan menghasilkan file di folder App\Enums\UserStatusEnum dan samplenya seperti ini:

<?php

namespace App\Enums;

use MadWeb\Enum\Enum;

/**
 * @method static UserStatus Active()
 * @method static UserStatus Pending()
 */

final class UserStatusEnum extends Enum
{
    // Sebagai Defaultnya ketika anda membuat record maka akan menggunakan `Active`
    const __default = self::Active;

    const Active = 'active';
    const Pending = 'pending';
}

Lalu tambahkan lah kolom status di migration bisa dengan mengetik :

php artisan make:migration add_status_to_users_table

atau anda bisa menambahkan kolom ditable users seperti ini :

<?php

use App\Enums\UserStatusEnum;

...
$table->enum('status', ['Pending' => UserStatusEnum::Pending, 'Active' => UserStatusEnum::Active])->default(UserStatusEnum::Pending);
...

Lakukan migrate :

php artisan migrate

atau jika anda sudah melakukan migrate anda bisa memigratekan ulang :

php artisan migrate:fresh

Pengaturan di Model User

Enum Package Laravel sangat bagus ketika anda mengatur di model User anda karena untuk membaca bahwa kolom status itu berisi enum, dan cara menerapkan di User modelnya di file App\Models\User :

protected $casts = [
    'status' => UserStatusEnum::class,
];

Cara menggunakan di Eloquent cukup mudah dalam method store sekarang coba tambahkan :

$user = User::first();

$status = $user->status; // PostStatusEnum

// Memberikan status kepada user dengan status Pending
$user->status = UserStatusEnum::Pending();

// Menyimpan status User
$user->save();

Cara memunculkan / menampilkannya pun mudah anda bisa direct langsung seperti ini :

$user = User::first();

// Nanti di blade gunakan seperti ini :
{{ $user->status }}
// Atau
{{ $user->status->label() }}

Demikian tutorial tentang Menggunakan Package Enum Laravel

happy coding...