sql >> Base de Datos >  >> RDS >> Mysql

Mysql Codeigniter Active Record - ¿Cómo hago una consulta where_in y devuelvo el orden correcto de los resultados?

Para ordenar el resultado por orden en su matriz, puede hacer lo siguiente:

$array_of_ordered_ids = array(4,5,2,6);

Como ya sabes el orden de los números, puedes usar Mysql FIELD() función:

ORDER BY FIELD(id, 4, 5, 2, 6);

Para crear una cadena de este tipo, puede usar implode :

$order = sprintf('FIELD(id, %s)', implode(', ', $array_of_ordered_ids));

Pruébalo:

$array_of_ordered_ids = array(4,5,2,6);
$this->db->where_in('id', $array_of_ordered_ids);
$order = sprintf('FIELD(id, %s)', implode(', ', $array_of_ordered_ids));
$this->db->order_by($order);