Створюючи веб-додатки, часто виникає потреба в обробці необов'язкових полів і наданні значень за замовчуванням. Laravel спрощує це завдання за допомогою методу mergeIfMissing, доступного в об'єкті запиту. Цей метод елегантно дозволяє додавати значення за замовчуванням до ваших даних запиту, не перезаписуючи вже наявні значення. Давайте розглянемо, як ця можливість може поліпшити ваші Laravel-додатки.
Метод mergeIfMissing додає вказаний масив до даних запиту, але тільки для тих ключів, які ще не присутні в запиті. Синтаксис простий:
$request->mergeIfMissing(['key' => 'default_value']);
Розглянемо практичний приклад, де ми створюємо систему для додавання постів. Нам потрібно, щоб певні поля мали значення за замовчуванням, якщо не були вказані в запиті.
Ось як ми можемо реалізувати це за допомогою mergeIfMissing:
<?php
namespace App\Http\Controllers;
use App\Models\Post;
use Illuminate\Http\Request;
class BlogPostController extends Controller
{
    public function createPost(Request $request)
    {
        $request->mergeIfMissing([
            'view_count' => 0,
            'engagement_count' => 0,
            'post_status' => 'draft',
            'publication_date' => null,
        ]);
        $blogPost = Post::create($request->all());
        return response()->json($blogPost, 201);
    }
}
У цьому прикладі mergeIfMissing допомагає нам:
Ось як виглядають вхідні та вихідні дані:
// POST /api/posts
// Вхід (мінімальний)
{
    "title": "Getting Started with Laravel",
    "content": "Laravel is a powerful framework..."
}
 
// Вихід
{
    "id": 1,
    "title": "Getting Started with Laravel",
    "content": "Laravel is a powerful framework...",
    "post_status": "draft",
    "view_count": 0,
    "engagement_count": 0,
    "publication_date": null,
    "created_at": "2024-03-15T10:00:00.000000Z",
    "updated_at": "2024-03-15T10:00:00.000000Z"
}
 
// Вхід (з деякими вказаними полями)
{
    "title": "Advanced Laravel Tips",
    "content": "Here are some advanced Laravel tips...",
    "post_status": "published",
    "publication_date": "2024-03-15T12:00:00.000000Z"
}
 
// Вихід
{
    "id": 2,
    "title": "Advanced Laravel Tips",
    "content": "Here are some advanced Laravel tips...",
    "post_status": "published",
    "view_count": 0,
    "engagement_count": 0,
    "publication_date": "2024-03-15T12:00:00.000000Z",
    "created_at": "2024-03-15T12:00:00.000000Z",
    "updated_at": "2024-03-15T12:00:00.000000Z"
}
Використання mergeIfMissing() забезпечує зручний спосіб обробки необов'язкових полів у ваших Laravel-додатках. Це особливо корисно при роботі з формами чи API, де деякі поля можуть бути необов'язковими, але вам потрібно зберегти однорідну структуру даних у вашому застосунку