Request Data Collection Handling using Laravel

Explanation:

Laravel's request->collect() method transforms input data into collections, enabling powerful data manipulation using Laravel's collection methods. This approach simplifies input processing and validation workflows.


Code:

// Basic usage
$input = $request->collect();
$filtered = $input->filter()->map(...);

Here's an example of an order processing system with complex input handling:

<?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'];
    }
}

The request->collect() method streamlines input processing by providing access to Laravel's collection methods, making complex data transformations more readable and maintainable.

Comments :

John Doe Date: 1/3/2025

Quisque tristique velit hendrerit maximus posuere