Обробка запитів з використанням PHP Enums у Laravel

5
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 16 січня, 2026
Завдяки новим можливостям Laravel обробка запитів стає набагато простішою завдяки прямій підтримці enum. Читайте далі, щоб дізнатися, як ця функція допомагає забезпечити безпеку типів та узгодженість даних у вашій програмі

Laravel вдосконалює обробку запитів, надаючи підтримку enum, що дозволяє безпечно обробляти перераховані значення з вхідних запитів. Ця функція спрощує валідацію вводів та забезпечує узгодженість даних при роботі з попередньо визначеними наборами значень.

use App\Enums\UserRole;
// Основне отримання enum
$role = $request->enum('role', UserRole::class);

Ось приклад створення системи управління підписками:

// app/Enums/SubscriptionTier.php
<?php

namespace App\Enums;

enum SubscriptionTier: string
{
    case FREE = 'free';
    case BASIC = 'basic';
    case PRO = 'pro';
    case ENTERPRISE = 'enterprise';

    public function getMonthlyLimit(): int
    {
        return match($this) {
            self::FREE => 1000,
            self::BASIC => 5000,
            self::PRO => 20000,
            self::ENTERPRISE => 100000
        };
    }
}

// app/Controllers/AccountController.php
namespace App\Http\Controllers;

use App\Enums\SubscriptionTier;
use App\Models\Account;
use Illuminate\Http\Request;

class AccountController extends Controller
{
    public function updateSubscription(Request $request, Account $account)
    {
        $newTier = $request->enum('tier', SubscriptionTier::class);
        if (!$newTier) {
            return response()->json([
                'error' => 'Неправильний рівень підписки'
            ], 422);
        }
        $account->update([
            'subscription_tier' => $newTier,
            'monthly_limit' => $newTier->getMonthlyLimit(),
            'upgraded_at' => now()
        ]);

        return response()->json([
            'message' => 'Підписку успішно оновлено',
            'account' => $account->fresh()
        ]);
    }
}

Приклад використання:

// Запит на вхід
{
    "tier": "pro"
}

// Успішна відповідь
{
    "message": "Підписку успішно оновлено",
    "account": {
        "id": 1,
        "subscription_tier": "pro",
        "monthly_limit": 20000,
        "upgraded_at": "2024-02-01T10:30:00.000000Z"
    }
}

// Неправильний ввід
{
    "tier": "premium"  // Неіснуюче значення enum
}

// Відповідь з помилкою
{
    "error": "Неправильний рівень підписки"
}

Обробка enum у запитах надає надійний спосіб роботи з перерахованими значеннями, зберігаючи при цьому типову безпеку та цілісність домену

Популярні

Logomark Logotype

4 поширені помилки Vite у Laravel

Використання Vite для створення фронтенд-ресурсів у вашому додатку Laravel може бути захоплюючим, але іноді ви можете стикнутися з певними помилками. У цій статті ми розглянемо чотири поширені помилки, з якими ви можете зіткнутися, а також підкажемо способи їх усунення, щоб ви могли знову зосередитися на розробці вашого додатку

Logomark Logotype

Використання повнотекстового пошуку в Laravel

Laravel пропонує потужні можливості повнотекстового пошуку за допомогою методів whereFullText та orWhereFullText, що дозволяють здійснювати складні запити до бази даних. Дізнайтеся, як реалізувати ефективний пошук для вашого блогу чи системи управління контентом

Logomark Logotype

Оптимізація запитів до бази даних за допомогою скорочених методів Laravel

Laravel пропонує зручні методи для роботи з датами, які значно спрощують запити до бази даних. Досліджуйте, як ці інтуїтивно зрозумілі функції допомагають створювати чіткі та зрозумілі умови для роботи з часовими даними!