Recentemente, eu estava trabalhando em um projeto usando o framework Laravel. Eu queria recuperar um cliente e exibir suas transações em uma página. No entanto, eu precisava que as transações fossem classificadas da mais recente para a mais antiga (ordem decrescente). Eu estava usando o Eloquent para recuperar o cliente e suas transações usando a with()
função. Isso retornou uma coleção de objetos de transação na ordem em que foram colocados no banco de dados. Não existe uma ordem definitiva neles. Eu queria uma maneira de ter certeza de que eles sempre eram retornados em ordem decrescente, caso algo estragasse e eles acabassem no banco de dados em uma ordem estranha. Aqui está a solução que encontrei.
$customer = User::with('transactions')->find($id);
$customer->transactions = $customer->transactions->sortBy(function($transaction)
{
return $transaction->created_at;
})->reverse();
Isso primeiro classificará a coleção de transações em ordem crescente. Em seguida, ele inverte a coleção, colocando-os em ordem decrescente. Como sortBy()
retorna o objeto classificado, podemos encadear esses métodos para tornar nosso código mais compacto e legível. Espero que isso ajude em seu projeto futuro. Deixe comentários se ajudar!