Lo que buscas es un método de collections en Laravel que se llama unique
. Simplemente te filtra la colección para que te quedes con los valores no repetidos. Como tú dices, es parecido al distinct que se hace con SQL contra la base de datos.
Tienes una colección de elementos:
$miColeccion = collect([1,2,3,3,4,5,6,7,8,1,2,7]);
Ejecutas el método unique() y te devuelve una colección sin repetidos.
$coleccionSinRepetidos = $miColeccion->unique();
Ahora en $coleccionSinRepetidos tendrás el siguiente contenido:
Illuminate\Support\Collection {#1794 ▼
#items: array:8 [▼
0 => 1
1 => 2
2 => 3
4 => 4
5 => 5
6 => 6
7 => 7
8 => 8
]
}
Es verdad que le podrían haber llamado "distinct" como en las bases de datos y sería más fácil de encontrar, pero llamando unique queda muy claro también lo que hace y no te confundes sobre si estás trabajando con un método de eloquent o un método de colecciones de laravel.
Espero que te sirva!