Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

250
Visualizações
Ordenando la colección laravel dejando nulo/vacío al final

Parece que no puedo entender la clasificación de la colección laravel, por lo que los datos empty / null terminarían siendo los últimos. (un poco confundido acerca de usort)

Prácticamente todo lo que tengo es un montón de times / timestamps de tiempo que deben ordenarse. Algunas filas pueden no tener para esa columna.

Me gustaría que los datos aparezcan ASC / ascending mientras que los datos empty/null se muestran al final.

$collection->sortBy('timestamp') ordena bien pero no sabe cómo manejar los campos vacíos.

datos

La mesa se ve así.

 $data = $data->sort(function($a, $b) use ($sortBy) { if ($a->{$sortBy} and $b->{$sortBy}) return 0; return ($a->{$sortBy} > $b->{$sortBy}) ? -1 : 1; });

Código aleatorio que probé de Internet, que no puedo hacer que funcione correctamente. $sortBy contiene un nombre de campo para ordenar (ya que puede cambiar) El código defectuoso trata con datos vacíos/nulos pero está fuera de servicio. defectuoso

about 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Tiene que usar sort() con un cierre. A continuación, ordenará la marca de tiempo ASC con NULL al final.

 $sorted = $collection->sort(function ($a, $b) { if (!$a->timestamp) { return !$b->timestamp ? 0 : 1; } if (!$b->timestamp) { return -1; } if ($a->timestamp == $b->timestamp) { return 0; } return $a->timestamp < $b->timestamp ? -1 : 1; });
about 4 years ago · Santiago Trujillo Relatório

0

Probar:

$collection->sortBy('-timestamp')

¿Funciona?

about 4 years ago · Santiago Trujillo Relatório

0

Tuve un problema similar. En mi caso, el atributo de time de $result podría ser NULL . Actúa como si NULL fuera 0 (como int ) y ese es el comportamiento esperado. Pero también quería ordenar la colección dejando NULL en último lugar.

 $collection->sortBy(function ($result) { if ($result['time'] === NULL) { return PHP_INT_MAX; } return $result['time']; });

Puede lograr esto simplemente devolviendo un valor más alto en el orden alfabético en comparación con todos los demás valores en la matriz. es decir PHP_INT_MAX para estar seguro. Esto asegurará que todos los resultados donde el time sea igual a NULL estén al final de la matriz.

about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda