Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Mysql Codeigniter Active Record - Como faço uma consulta where_in e retorno a ordem correta dos resultados?


Para ordenar o resultado pela ordem em sua matriz, você pode fazer o seguinte:
$array_of_ordered_ids = array(4,5,2,6);

Como você já sabe a ordem dos números, você pode usar o Mysql FIELD() função:
ORDER BY FIELD(id, 4, 5, 2, 6);

Para criar tal string, você pode usar implode :
$order = sprintf('FIELD(id, %s)', implode(', ', $array_of_ordered_ids));

De uma chance:
$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);