Puede recuperar valores de campos distintos de documentos en una colección llamando al método distinct() método en una colección de objetos o un generador de query.
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, consulta el Recuperar documentos que coinciden con una query de la guía Operaciones de lectura.
Ejemplo
Seleccione de lo siguiente Eloquent y Query Builder pestañas para ver ejemplos de uso para la misma operación que utilizan cada sintaxis de consulta correspondiente:
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.