Você pode recuperar valores de campo distintos de documentos em uma coleção ligando para o método distinct() em uma coleção de objeto ou em um construtor de queries.
Para recuperar valores de campo distintos, passe um filtro de query para o método where() e um nome de campo para o método select() . Em seguida, chame distinct() para retornar os valores exclusivos do campo selecionado em documentos que correspondem ao filtro de query.
Dica
Para obter mais informações sobre filtros de query, consulte a seção Recuperar documentos que correspondam a uma query do guia Operações de leitura.
Exemplo
Selecione a partir das seguintes abas Eloquent e Query Builder para visualizar exemplos de uso para a mesma operação que usa cada sintaxe de query correspondente:
Este exemplo executa as seguintes ações:
Utiliza o modelo
MovieEloquent para representar a coleção dosample_mflixmoviesbanco de dados doRecupera valores de campo distintos de documentos da coleção
moviesque correspondem a um filtro de consultaImprime os valores distintos
O exemplo chama os seguintes métodos no modelo Movie :
where(): corresponde a documentos em que o valor do campodirectorsinclui"Sofia Coppola"select(): recupera os valores de campoimdb.ratingdos documentos correspondentesdistinct(): Recupera os valores únicos do campo selecionado e retorna a lista de valoresget(): recupera os resultados da query
$ratings = Movie::where('directors', 'Sofia Coppola') ->select('imdb.rating') ->distinct() ->get(); echo $ratings;
[[5.6],[6.4],[7.2],[7.8]]
Este exemplo executa as seguintes ações:
Acessos a coleção
movieschamando o métodotable()a partir da faseDBRecupera valores de campo distintos de documentos da coleção
moviesque correspondem a um filtro de consultaImprime os valores distintos
O exemplo chama os seguintes métodos de construtor de query:
where(): corresponde a documentos em que o valor do campodirectorsinclui"Sofia Coppola"select(): recupera os valores de campoimdb.ratingdos documentos correspondentesdistinct(): Recupera os valores únicos do campo selecionado e retorna a lista de valoresget(): recupera os resultados da query
$ratings = DB::table('movies') ->where('directors', 'Sofia Coppola') ->select('imdb.rating') ->distinct() ->get(); echo $ratings;
[5.6,6.4,7.2,7.8]
Para saber como editar seu aplicativo Laravel para executar o exemplo de uso, consulte a página de exemplos de uso.