---
title: "groupBy() - організація даних як у таблиці"
url: https://laravelukraine.com/blog/groupby-organizaciia-danix-iak-u-tablici
author: "Олексій Бабінцев"
date: 2026-08-24
---

# groupBy() - організація даних як у таблиці

Потрібно показати пости за категоріями? Вкладені цикли не потрібні.

`groupBy()` групує колекцію за ключем.

**Як працює:**

Повертає масив груп, де кожна група - окрема колекція.

**Розширені можливості:**

* Групування за callback
* Кілька рівнів групування
* Dot notation

Порада: ідеально для аналітики, звітів і категоризації.

```php
// Групування за категорією
$byCategory = $posts->groupBy('category_id');

// Групування за роком
$byYear = $posts->groupBy(fn($p) => $p->created_at->year);

// Доступ до груп
foreach ($byCategory as $categoryId => $posts) {
  echo "Category {$categoryId}: {$posts->count()} posts\n";
}

// Кілька рівнів
$byYearMonth = $posts->groupBy([
  fn($p) => $p->created_at->year,
  fn($p) => $p->created_at->month,
]);

// Групування по зв'язку
$byPostTitle = $comments->groupBy('post.title');

// Практичний приклад - суми продажів
$report = $orders->groupBy('status')
  ->map(fn($group) => $group->sum('total'));
```
