РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1323 of 1392 menu

Команда 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,
    которая создаёт новый класс
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить