Estou preso em uma tarefa simples. Eu só preciso pedir os resultados dessa ligação
$results = Project::all();
Onde Project
está um modelo. Eu tentei isso
$results = Project::all()->orderBy("name");
Mas não deu certo. Qual é a melhor maneira de obter todos os dados de uma tabela e ordená-los?
laravel
laravel-4
eloquent
sql-order-by
MatterGoal
fonte
fonte
get()
vsall()
: stackoverflow.com/questions/34587457/…Você ainda pode usar sortBy (no nível da coleção) em vez de orderBy (no nível da consulta) se ainda quiser usar all (), pois ele retorna uma coleção de objetos.
Ordem ascendente
Ordem decrescente
Confira a documentação sobre coleções para obter mais detalhes.
https://laravel.com/docs/5.1/collections
fonte
orderBy
no nível da consulta?sortBy()
acontece dentro do Laravel Engine (em PHP), enquanto issoorderBy()
é feito no banco de dados. Certamente, o banco de dados será mais rápido em quase todas as situações concebíveis e, à medida que seu conjunto de dados aumentar, aumentará a disparidade no desempenho. Eu adoraria ouvir os pensamentos de outras pessoas sobre isso.Além disso, apenas para reforçar as respostas anteriores, ela também pode ser classificada em ordem
desc
crescente ou decrescenteasc
, adicionando o segundo parâmetro.fonte
2017 update
O Laravel 5.4 adicionou métodos orderByDesc () ao query builder:
fonte
Enquanto você precisar de resultado para a data como desc
fonte
FAÇA ISSO:
NÃO FAÇA ISTO:
PORQUE? Resumidamente, a primeira abordagem é mais rápida que a segunda.
fonte
Confira o
sortBy
método para o Eloquent: http://laravel.com/docs/eloquentfonte
Observe que você pode fazer:
Isso gera uma consulta como:
Em alguns aplicativos quando o banco de dados não é otimizado e a consulta é mais complexa, e você precisa impedir a geração de um ORDER BY no SQL final, você pode:
Agora é php quem pede o resultado.
fonte
Você precisa de instruções para receber, porque é trazer os registros e encomendar
Exemplo:
No exemplo, os dados são filtrados por "where" e trazem registros maiores que 20 e orderBy catalogam por ordem de alto a baixo.
fonte