Розподіл колекцій за допомогою допоміжного методу splitIn у Laravel

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 24 червня, 2025
Метод `splitIn` у Laravel пропонує елегантне рішення для поділу колекцій на рівномірно розподілені групи. Ви хочете дізнатися, як покращити організацію даних і досягти балансованих сегментів? Читайте далі та дізнайтеся, як цей метод спростить ваше життя

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