Nouveau dans Laravel 13.30. Pour découper une collection à chaque fois qu'une valeur change, il fallait une boucle avec une variable de suivi, ou chunkWhile() et une fonction qui compare chaque élément au dernier du morceau. chunkBy() fait ce découpage directement.
Avant
$messages->chunkWhile( fn (array $message, int $cle, Collection $morceau) => $message['auteur'] === $morceau->last()['auteur'] );
Depuis Laravel 13.30
$messages->chunkBy('auteur');
chunkBy() accepte une clé ou une fonction. Ce n'est pas groupBy() : seuls les éléments voisins qui partagent la même valeur sont regroupés. Un auteur qui reprend la parole plus tard ouvre donc un nouveau groupe.
À faire
FilDeMessages::regrouperParAuteur() regroupe les messages consécutifs d'un même auteur, pour les afficher comme dans une messagerie. Réécrivez cette méthode avec chunkBy(), sans boucle. Le résultat doit rester le même : une liste de groupes ['auteur' => …, 'messages' => [textes…]].