Метод splitIn
у Laravel є елегантним рішенням для розподілу колекцій на рівномірні групи. Цей хелпер колекцій спрощує процес організації даних у збалансовані сегменти.
Метод приймає один параметр, який вказує на бажану кількість груп:
$numbers = collect([10, 20, 30, 40, 50, 60, 70, 80]);
$chunks = $numbers->splitIn(3);
// Вивід: [[10, 20, 30], [40, 50, 60], [70, 80]]
Цей метод особливо корисний, коли потрібно забезпечити збалансоване розподілення даних між кількома обробними одиницями або зонами відображення.
class ProductCatalogManager
{
public function arrangeForGallery(Collection $products, int $columnCount): Collection
{
$productColumns = $products->splitIn($columnCount);
return $productColumns->map(function ($columnProducts, $columnIndex) {
return [
'column_id' => $columnIndex + 1,
'item_count' => $columnProducts->count(),
'products' => $columnProducts->map(fn($product) => [
'name' => $product->name,
'price' => $product->formatted_price,
'image_url' => $product->primary_image,
'category' => $product->category->name
])
];
});
}
}
$featuredProducts = Product::featured()->get();
$catalogManager = new ProductCatalogManager();
$galleryLayout = $catalogManager->arrangeForGallery($featuredProducts, 4);
foreach ($galleryLayout as $column) {
echo "Стовпець {$column['column_id']} містить {$column['item_count']} продуктів\n";
}
Laravel автоматично обробляє нерівномірні розподілення, розміщуючи зайві елементи в останній групі, що робить splitIn
ідеальним для створення збалансованих макетів і чесного розподілу роботи