Saltar al contenido

Laravel / PHP: Orden alfabético con números en orden

Solución:

Se le plantea el problema de ordenar elementos alfanuméricamente, o en términos de informática, clasificación natural.

Hay muchas formas de lograr una ordenación natural con MySQL directo, pero también puede tomar los resultados de su ayudante de Laravel en formato de matriz e implementar PHP natsort función en su lugar.

De los métodos que encontré anteriormente, obtuve la mejor manera que probablemente resolvería su problema con el código de ejemplo:

DB::table('test')->orderBy('LENGTH(title)', 'ASC')
    ->orderBy('title', 'ASC')
    ->get();

sin embargo, no estoy seguro de si el ayudante se quejará de recibir una función MySQL en lugar de un nombre de columna directo en el orderBy función. También estoy transcribiendo las referencias que utilicé en combinación con su ejemplo; no puedo garantizar la eficacia.

Para Laravel esto también funciona:

$collection = $collection->sortBy('order', SORT_REGULAR, true);

Puede que sea tarde, pero a otros les puede ayudar.

Según el enlace anterior que encontré a continuación, obtuve la mejor manera que probablemente resolvería su problema con el código de ejemplo: https://www.electrictoolbox.com/mysql-order-string-as-int/

Consulta

SELECT * FROM <table> ORDER BY CAST(<column> AS unsigned)

Ejemplo para laravel

DB::table('test')
    ->orderByRaw("CAST(title as UNSIGNED) ASC")
    ->get();
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *