> Faqs > Cómo quedarme solo con los valores distintos de una colección de Laravel (como distinct en MySQL)

Cómo quedarme solo con los valores distintos de una colección de Laravel (como distinct en MySQL)

Tengo una colección con valores. Es una colección de Laravel, y quiero quedarme solamente con los valores que no estén repetidos, los valores distintos.

Lo que quiero hacer sería parecido a usar el distinct al hacer una consulta SQL contra una base de datos. Pero lo que tengo yo es una colección de elementos ya. ¿Cómo se puede hacer?

Respuestas

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!

Julian
1147 49 87 46