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