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

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 31 січня, 2025
Досліджуйте, як метод `request->collect()` у Laravel спрощує обробку вхідних даних та дозволяє виконувати потужні маніпуляції за допомогою колекцій. Чи готові ви дізнатися, як цей інструмент може вдосконалити ваші проекти? Читайте далі, щоб відкрити нові можливості для обробки даних!

Метод request->collect() у Laravel перетворює вхідні дані на колекції, що дозволяє ефективно маніпулювати даними за допомогою методів колекцій Laravel. Цей підхід спрощує обробку даних та валідацію.

// Основне використання
$input = $request->collect();
$filtered = $input->filter()->map(...);

Ось приклад системи обробки замовлень з комплексною обробкою вхідних даних:

<?php

namespace App\Http\Controllers;

use App\Models\Order;
use Illuminate\Http\Request;

class OrderController extends Controller
{
    public function bulkProcess(Request $request)
    {
        $result = $request->collect()
            ->reject(fn($item) => empty($item['product_id']))
            ->map(function ($item) {
                return [
                    'product_id' => $item['product_id'],
                    'quantity' => max(1, (int) $item['quantity']),
                    'price' => $this->calculatePrice($item),
                    'processed_at' => now(),
                ];
            })
            ->groupBy('product_id')
            ->map(function ($group) {
                return [
                    'total_quantity' => $group->sum('quantity'),
                    'total_value' => $group->sum('price'),
                    'items' => $group->values(),
                ];
            });

        return response()->json([
            'processed' => $result->count(),
            'summary' => $result,
        ]);
    }

    private function calculatePrice($item): float
    {
        $basePrice = Product::find($item['product_id'])->price;
        return $basePrice * $item['quantity'];
    }
}

Метод request->collect() спрощує обробку даних, надаючи доступ до методів колекцій Laravel, що робить складні перетворення даних зрозумілішими та легшими для підтримки