Метод 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 спрощує обробку умовних запитів, зберігаючи чистоту та читабельність коду
Досліджуйте нові можливості локалізації вашого Laravel-додатку з пакунками, які використовують штучний інтелект, такими як ChatGPT та Claude. Які рішення можуть спростити ваш процес перекладу та зробити його більш точним? Читайте далі, щоб дізнатися більше!
PHP 8.5 обіцяє безліч нових можливостей, таких як оператор Pipe, функції `array_first()` та `array_last()`, а також нове розширення URI. Чи готові ви дізнатися, як ці функції можуть спростити вашу розробку? Читайте далі, щоб дізнатися більше про ці захоплюючі нововведення
Чи стикалися ви з помилкою «SQLSTATE[HY000] [2002] Connection refused» під час налаштування GitHub Actions для вашого додатку на Laravel? У нашій статті ми розглянемо три поширені причини цієї помилки та надамо рішення для їх усунення. Читайте далі, щоб дізнатися, як ваш CI/CD потік може працювати бездоганно!