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

0
Перекладено ШІ
Оригінал: 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 спрощує обробку умовних запитів, зберігаючи чистоту та читабельність коду

Популярні

Logomark Logotype

Використання штучного інтелекту для управління перекладами в Laravel

Досліджуйте нові можливості локалізації вашого Laravel-додатку з пакунками, які використовують штучний інтелект, такими як ChatGPT та Claude. Які рішення можуть спростити ваш процес перекладу та зробити його більш точним? Читайте далі, щоб дізнатися більше!

Logomark Logotype

Що нового в PHP 8.5

PHP 8.5 обіцяє безліч нових можливостей, таких як оператор Pipe, функції `array_first()` та `array_last()`, а також нове розширення URI. Чи готові ви дізнатися, як ці функції можуть спростити вашу розробку? Читайте далі, щоб дізнатися більше про ці захоплюючі нововведення

Logomark Logotype

Випущено Livewire 3.6

Laravel Livewire випустив нову версію 3.6, яка приносить з собою цікаві HTML-директиви для управління видимістю DOM-елементів і JavaScript-діями. Досліджуйте нові можливості Livewire, що допоможуть вам створити ще більш інтерактивні користувацькі інтерфейси!