Utilice groupBy en colecciones con función de callback personalizada
Si desea agrupar los resultados por alguna condición que no sea una columna directa en su base de datos, puede hacerlo proporcionando un clousure.
Por ejemplo, si desea agrupar a los usuarios por día de registro, este es el código:
$users = User::all()->groupBy(function($item) {
return $item->created_at->format('Y-m-d');
});
Aviso: se realiza en una clase “Collection”, por lo que se realiza DESPUÉS de obtener los resultados de la base de datos.
Fuente: Laravel Daily