Laravel 13.30 Nouveauté Publié le

Regrouper les éléments voisins avec chunkBy()

Les messages consécutifs d'un même auteur se regroupent en une ligne, sans boucle ni variable de suivi.

Notions abordées : Collections

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…]].

D'où vient la fonctionnalité : la pull request d'origine.