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