Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

251
Views
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 answers
Answer question

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 Report

0

Probar:

$collection->sortBy('-timestamp')

¿Funciona?

about 4 years ago · Santiago Trujillo Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!