Mysql
 sql >> Base de données >  >> RDS >> Mysql

Mysql Codeigniter Active Record - Comment faire une requête where_in et renvoyer le bon ordre de résultats ?

Pour trier le résultat par ordre dans votre tableau, vous pouvez procéder comme suit :

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

Comme vous connaissez déjà l'ordre des numéros, vous pouvez utiliser Mysql FIELD() fonction :

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

Pour créer une telle chaîne, vous pouvez utiliser implode :

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

Essayez-le :

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