Обробка наявності даних запиту в Laravel

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 09 лютого, 2025
Метод whenHas у Laravel є елегантним рішенням для обробки запитів, що дозволяє виконувати код на основі наявності вхідних даних. Як цей метод може спростити вашу роботу з опціональними полями та протестувати логіку форм? Читайте далі, щоб дізнатися більше про ефективні способи управління параметрами ваших запитів!

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

Цей підхід особливо вигідний при подачі форм, де певні поля активують конкретну бізнес-логіку. Наприклад, коли користувач підписується на електронні сповіщення, потрібно перевірити та зберегти додаткові налаштування, пов’язані з електронною поштою.

// Проста перевірка наявності

$request->whenHas('name', function ($name) {
    // Обробка імені, якщо воно присутнє
});

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

// app/Controllers/PreferencesController.php
<?php

namespace App\Http\Controllers;

use App\Models\UserPreferences;
use Illuminate\Http\Request;

class PreferencesController extends Controller
{

    public function update(Request $request, UserPreferences $preferences)

    {
        $request->whenHas('email_frequency',
            function ($frequency) use ($preferences) {
                $preferences->update([
                    'email_frequency' => $frequency,
                    'last_email_update' => now()
                ]);
            }
        );

        $request->whenHas('push_enabled',
            function ($enabled) use ($preferences) {
                $preferences->update([
                    'push_enabled' => $enabled,
                    'push_updated_at' => now()
                ]);
            },
            function () use ($preferences) {
                $preferences->update([
                    'push_enabled' => false,
                    'push_updated_at' => now()
                ]);
            }
        );

        return response()->json([
            'message' => 'Preferences updated successfully',
            'preferences' => $preferences->fresh()
        ]);
    }
}

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

// Вхідні дані з деякими перевагами

{
    "email_frequency": "weekly"
}

// Відповідь

{
    "message": "Preferences updated successfully",
    "preferences": {
        "email_frequency": "weekly",
        "last_email_update": "2024-02-01T10:30:00.000000Z",
        "push_enabled": false,
        "push_updated_at": "2024-02-01T10:30:00.000000Z"
    }
}

Метод whenHas спрощує обробку умовних запитів, зберігаючи чистоту та читабельність коду