Команда make:enum
Команда make:enum создаёт новый класс перечисления
в директории app/Enums. Перечисления позволяют
определять набор фиксированных значений, которые могут
принимать поля модели. Первым параметром передаётся имя
класса перечисления. При необходимости можно указать
флаг --type для создания строкового или
целочисленного перечисления.
Синтаксис
php artisan make:enum EnumName
Пример 1
Создадим перечисление UserRole для ролей пользователей:
<?php
namespace App\Enums;
enum UserRole: string
{
case ADMIN = 'admin';
case EDITOR = 'editor';
case USER = 'user';
}
?>
Результат выполнения команды:
"INFO Enum [app/Enums/UserRole.php] created successfully."
Пример 2
Создадим целочисленное перечисление OrderStatus
для статусов заказа:
<?php
namespace App\Enums;
enum OrderStatus: int
{
case PENDING = 1;
case PROCESSING = 2;
case COMPLETED = 3;
case CANCELLED = 4;
}
?>
Результат выполнения команды:
"INFO Enum [app/Enums/OrderStatus.php] created successfully."
Пример 3
Используем созданное перечисление в модели:
<?php
namespace App\Models;
use App\Enums\UserRole;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
protected $casts = [
'role' => UserRole::class,
];
public function isAdmin(): bool
{
return $this->role === UserRole::ADMIN;
}
}
?>
Пример использования в контроллере:
<?php
namespace App\Http\Controllers;
use App\Models\User;
use App\Enums\UserRole;
class UserController extends Controller
{
public function index()
{
$users = User::where('role', UserRole::ADMIN)->get();
foreach ($users as $user) {
echo $user->name . "\n";
}
}
}
?>
Результат выполнения кода:
"John Doe"
"Jane Smith"
Смотрите также
-
команда
make:model,
которая создаёт новую модель Eloquent -
команда
make:migration,
которая создаёт новый файл миграции -
команда
make:controller,
которая создаёт новый контроллер -
команда
make:class,
которая создаёт новый класс