Laravel : Pluck unique d’une Collection (prénom, nom)

Sur Laravel, la fonction pluck() permet de lister les différentes valeurs portées par le champ indiqué dans une Collection.

Lorsqu’on liste les prénoms des membres d’un groupe par exemple, on peut vouloir afficher la première lettre du nom de famille si un prénom est représenté plusieurs fois, voire afficher le nom de famille en entier si deux membres portent le même prénom et possèdent la même initiale.Pour cela, on peut utiliser macro, et ajouter une méthode pluckUnique() aux Collections.

On se rend dans la méthode boot d’un serviceProvider, typiquement AppServiceProvider, et on ajoute ces lignes :

La nouvelle méthode pluckUnique prend 2 paramètres obligatoires, ainsi qu’un troisième facultatif (pour renvoyer un tableau associatif similaire à la fonction pluck native).

Le premier champ est celui à afficher dans tous les cas, dans notre exemple il s’agit du prénom.

Le second champ sera utilisé pour distinguer deux éléments ayant une valeur du premier champ identique. Dans notre exemple :
 – Si deux personnes ont le même prénom, on affichera l’initiale de leur nom de famille.
 – Si deux personnes ont le même prénom ainsi que la même initiale, on affichera le nom entier.

Pour cette collection en entrée, où l’on a trois prénoms identiques ainsi que deux de ces prénoms avec la même initiale :

On pourra utiliser dans notre template Blade :

Ce qui nous affichera :