diff --git a/src/Phaseolies/Database/Entity/Builder.php b/src/Phaseolies/Database/Entity/Builder.php index bd59359..59f7dc0 100644 --- a/src/Phaseolies/Database/Entity/Builder.php +++ b/src/Phaseolies/Database/Entity/Builder.php @@ -2986,6 +2986,28 @@ public function repair(callable $fixer, bool $saveChanges = false): Collection return $results; } + /** + * Get records grouped by a callback result + * + * @param callable $callback + * @return array + */ + public function groupByCallback(callable $callback): array + { + $results = $this->get(); + $grouped = []; + + foreach ($results as $item) { + $key = $callback($item); + if (!isset($grouped[$key])) { + $grouped[$key] = []; + } + $grouped[$key][] = $item; + } + + return $grouped; + } + /** * Convert camelCase to snake_case for column names *