Une enum, abréviation de “enumeration”, est un type de données en programmation qui se compose d’un ensemble de valeurs nommées, souvent appelées membres ou éléments. Cela permet aux développeurs de définir une collection de constantes liées, rendant le code plus lisible et maintenable. Les enums sont couramment utilisées pour représenter des concepts comme les jours de la semaine, les mois ou les types de statut dans un programme.
Table des matières :
Étape 1 : Installer Laravel 11
composer create-project --prefer-dist laravel/laravel laravel-dev dev-master
Étape 2 : Créer une migration
php artisan make:migration create_products_table
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('products', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->text('body');
$table->string('status')->default('pending');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('products');
}
};
php artisan migrate
Étape 3 : Créer une classe Enum
php artisan make:enum Enums/ProductStatus
<?php
namespace App\Enums;
enum ProductStatus: string
{
case Pending = 'pending';
case Active = 'active';
case Inactive = 'inactive';
case Rejected = 'rejected';
}
Étape 4 : Créer un modèle
php artisan make:model Product
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use App\Enums\ProductStatus;
class Product extends Model
{
use HasFactory;
/**
* Write code on Method
*
* @return response()
*/
protected $fillable = [
'name', 'body', 'status'
];
/**
* Write code on Method
*
* @return response()
*/
protected function casts(): array
{
return [
'status' => ProductStatus::class,
];
}
}
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\ProductController;
Route::get('/product-test', [ProductController::class, 'index']);
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Enums\ProductStatus;
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' => ProductStatus::Active
];
$product = Product::create($input);
dd($product->status, $product->status->value);
}
}
php artisan serve
http://localhost:8000/product-test
App\Enums\ProductStatusEnum {#1250
name: "Active"
value: "active"
}
active