Puedes recuperar valores de campos distintivos de documentos en una colección al invocar el método distinct() en una colección de objetos o un generador de consultas.
Para recuperar valores distintos de campo, pasa un filtro de query al método where() y un nombre de campo al método select(). Luego, llama a distinct() para devolver los valores únicos del campo seleccionado en los documentos que coincidan con el filtro de query.
Tip
Para obtener más información sobre los filtros de query, consulte la sección Recuperar documentos que coincidan con una query de la guía Operaciones de lectura.
Ejemplo
Selecciona de las siguientes pestañas Eloquent y Query Builder para ver ejemplos de uso de la misma operación que usa cada correspondiente sintaxis de query:
Este ejemplo realiza las siguientes acciones:
Utiliza el modelo
MovieEloquent para representar la colecciónmoviesen la base de datossample_mflixRecupera los valores de campo distintos de los documentos de la colección
moviesque coinciden con un filtro de queryImprime los valores distintos
El ejemplo llama a los siguientes métodos en el modelo Movie:
where(): Coincide con documentos en los que el valor del campodirectorsincluye"Sofia Coppola"select()Recupera los valores del campoimdb.ratingde los documentos coincidentesdistinct()Recupera los valores únicos del campo seleccionado y devuelve la lista de valoresget(): Recupera los resultados de la consulta
$ratings = Movie::where('directors', 'Sofia Coppola') ->select('imdb.rating') ->distinct() ->get(); echo $ratings;
[[5.6],[6.4],[7.2],[7.8]]
Este ejemplo realiza las siguientes acciones:
Accede a la colección
moviesllamando al métodotable()desde la fachadaDBRecupera los valores de campo distintos de los documentos de la colección
moviesque coinciden con un filtro de queryImprime los valores distintos
El ejemplo llama a los siguientes métodos para crear query:
where(): Coincide con documentos en los que el valor del campodirectorsincluye"Sofia Coppola"select()Recupera los valores del campoimdb.ratingde los documentos coincidentesdistinct()Recupera los valores únicos del campo seleccionado y devuelve la lista de valoresget(): Recupera los resultados de la consulta
$ratings = DB::table('movies') ->where('directors', 'Sofia Coppola') ->select('imdb.rating') ->distinct() ->get(); echo $ratings;
[5.6,6.4,7.2,7.8]
Para aprender a editar tu aplicación Laravel para ejecutar el ejemplo de uso, consulta la página de Ejemplos de Uso.