Mysql
 sql >> Database >  >> RDS >> Mysql

Mysql Codeigniter Active Record - Come faccio a eseguire una query where_in e restituire l'ordine corretto dei risultati?

Per ordinare il risultato in base all'ordine nell'array, puoi fare quanto segue:

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

Poiché conosci già l'ordine dei numeri, puoi utilizzare Mysql FIELD() funzione:

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

Per creare tale stringa, puoi utilizzare implode :

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

Provalo:

$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);