Cara Membuat Enum Atribut Model di Laravel

SHARE :

Hari ini, contoh Membuat Enum Atribut Model di Laravel adalah topik utama kami.

contoh ini akan membantu anda bagaimana Membuat Enum Atribut Model di Laravel.

Jika anda ingin melihat contoh Membuat Enum Atribut Model di Laravel maka anda adalah tempat yang tepat.

Di sini Anda akan belajar Membuat Enum Atribut Model di Laravel. ikuti langkah di bawah ini untuk laravel 9 model cast enum.

Jika Anda ingin menggunakan tipe data enum untuk tabel Anda, maka Anda dapat membuat migrasi dan mengambil tipe data enum dan menetapkan nilai enum di sana.

Tetapi ketika nanti Anda ingin menambahkan satu lagi nilai enum maka Anda perlu membuat migrasi lagi dan mengubahnya.

Jadi, Laravel 9 memperkenalkan casting atribut model enum. Anda dapat membuat kelas enum dan menyetel pemeran pada model. Anda dapat melihat contoh langkah demi langkah di bawah ini dan belajar dari sana.

Dalam contoh ini, pertama, kita akan membuat migrasi dengan kolom string "status" dan nilai defaultnya adalah "pending".

Kemudian kita akan membuat model dengan casting untuk mengatur kelas enum. Kemudian kita akan membuat kelas enum dengan nilai spesifik dan digunakan pada model cast. jadi mari kita lihat contoh sederhana dan mempelajarinya.

#1: Install Laravel

Ini opsional; namun, jika Anda belum membuat aplikasi laravel, Anda dapat melanjutkan dan menjalankan perintah di bawah ini:

composer create-project laravel/laravel example-app

#2: Create Migration

Di sini, kita perlu membuat migrasi database untuk tabel "produk" dengan kolom nama, badan dan status dan juga kita akan membuat model untuk tabel produk.

php artisan make:migration create_products_table

database/migrations/2022_07_11_141714_create_products_table.php

<?php
  
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
  
return new class extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('products', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->text('body');
            $table->string('status')->default('pending');
            $table->timestamps();
        });
    }
  
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('products');
    }
};

Kemudian jalankan perintah migrasi untuk membuat tabel item.

php artisan migrate

#3: Create Enum Class

Pada langkah ini, kita akan membuat class ProductStatusEnum.php dan mendefinisikan semua nilai enum. mari buat model dan perbarui kode berikut:

app/Enums/ProductStatusEnum.php

<?php
  
namespace App\Enums;
 
enum ProductStatusEnum:string {
    case Pending = 'pending';
    case Active = 'active';
    case Inactive = 'inactive';
    case Rejected = 'rejected';
}

#4: Create Model

Pada langkah ini, kita akan membuat model Product.php dengan cssting. mari buat model dan perbarui kode berikut:

php artisan make:model Product

App/Models/Product.php

<?php
  
namespace App\Models;
  
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use App\Enums\ProductStatusEnum;
  
class Product extends Model
{
    use HasFactory;
  
    /**
     * Write code on Method
     *
     * @return response()
     */
    protected $fillable = [
        'name', 'body', 'status'
    ];
  
    /**
     * Write code on Method
     *
     * @return response()
     */
    protected $casts = [
        'status' => ProductStatusEnum::class
    ];
}

#5: Create Route

Pada langkah ketiga, kita akan membuat satu rute untuk pengujian. jadi buat satu rute di sini.

routes/web.php

<?php
 
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\ProductController;
   
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
     
Route::get('product-test', [ProductController::class, 'index']);

#6: Create Controller

Pada langkah ini, kita akan membuat file ProductController dan menulis metode index() untuk membuat item record dengan array dan akses sebagai array.

app/Http/Controllers/ProductController.php

<?php
  
namespace App\Http\Controllers;
  
use Illuminate\Http\Request;
use App\Models\Product;
  
class ProductController extends Controller
{
    /**
     * Write code on Method
     *
     * @return response()
     */
    public function index()
    {
        $input = [
            'name' => 'Gold',
            'body' => 'This is a Gold',
            'status' => ProductStatusEnum::Active
        ];
  
        $product = Product::create($input);
  
        dd($product->status, $product->status->value);
  
    }
}

#7: Run Laravel App

Semua langkah yang diperlukan telah dilakukan, sekarang Anda harus mengetikkan perintah di bawah ini dan tekan enter untuk menjalankan aplikasi Laravel:

php artisan serve

Sekarang, Buka browser web Anda, ketik URL yang diberikan dan lihat keluaran aplikasi:

http://localhost:8000/product-test

Output :

App\Enums\ProductStatusEnum {#1250 
  name: "Active"
  value: "active"
}
active

 

OOKINFO

Jasa pembuatan Aplikasi Mobile dan Web. Siap memberikan solusi digital untuk bisnis anda. Tugas Kuliah, Organisasi, Perusahaan, E-Commerce.