Обробка значень за замовчуванням у Laravel Request за допомогою mergeIfMissing

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 27 листопада, 2024
Вам цікаво дізнатися, як спростити обробку необов'язкових полів у своїх Laravel-додатках? Досліджуйте можливості методу mergeIfMissing, який дозволяє ефективно задавати значення за замовчуванням без перезапису вже наявних даних

Створюючи веб-додатки, часто виникає потреба в обробці необов'язкових полів і наданні значень за замовчуванням. Laravel спрощує це завдання за допомогою методу mergeIfMissing, доступного в об'єкті запиту. Цей метод елегантно дозволяє додавати значення за замовчуванням до ваших даних запиту, не перезаписуючи вже наявні значення. Давайте розглянемо, як ця можливість може поліпшити ваші Laravel-додатки.

# Як працює mergeIfMissing()

Метод 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, де деякі поля можуть бути необов'язковими, але вам потрібно зберегти однорідну структуру даних у вашому застосунку