Laravel надає елегантні методи для управління відсутніми даними запиту через missing() та whenMissing(). Ці методи спрощують обробку необов'язкових полів і встановлення значень за замовчуванням, роблячи ваш код більш зрозумілим і зручним для підтримки.
// Перевірка на відсутність даних
if ($request->missing('name')) {
$name = 'Гість';
}
// Обробка відсутніх даних з колбеками
$request->whenMissing('email', function () {
// Обробка відсутньої електронної пошти
});
Розглянемо приклад системи оновлення налаштувань:
// app/Controllers/SettingsController.php
<?php
namespace App\Http\Controllers;
use App\Models\Settings;
use Illuminate\Http\Request;
class SettingsController extends Controller
{
public function update(Request $request, Settings $settings)
{
$updates = [];
// Обробка налаштувань теми
$request->whenMissing('theme',
function() use (&$updates) {
$updates['theme'] = [
'mode' => 'system',
'color' => 'blue'
];
},
function() use (&$updates, $request) {
$updates['theme'] = [
'mode' => $request->input('theme.mode', 'light'),
'color' => $request->input('theme.color', 'blue')
];
}
);
// Обробка налаштувань сповіщень
if ($request->missing('notifications')) {
$updates['notifications'] = [
'email' => true,
'push' => false,
'frequency' => 'daily'
];
} else {
$updates['notifications'] = $request->notifications;
}
$settings->update($updates);
return response()->json([
'message' => 'Налаштування успішно оновлено',
'settings' => $settings->fresh()
]);
}
}
Приклад використання:
// Вхідні дані з мінімальною інформацією
{
"notifications": {
"email": true,
"push": true
}
}
// Відповідь
{
"message": "Налаштування успішно оновлено",
"settings": {
"theme": {
"mode": "system",
"color": "blue"
},
"notifications": {
"email": true,
"push": true,
"frequency": "daily"
}
}
}
// Вхідні дані з повною інформацією
{
"theme": {
"mode": "dark",
"color": "purple"
},
"notifications": {
"email": false,
"push": true,
"frequency": "weekly"
}
}
Методи missing() та whenMissing() пропонують зручний спосіб обробки необов'язкових даних запиту, зберігаючи читабельність коду