我有一组按特定顺序传递的 ID 需要保留。 我从几个左连接查询与每个 ID 相关的数据。 ID 是从搜索中返回的,因此必须保持顺序以使结果有效(否则会使搜索变得毫无意义)。
我的代码看起来像;
$this->db->where_in('id', $array_of_ordered_ids);
例如-
$this->db->where_in('id', array(4,5,2,6));
会按2,4,5,6的顺序返回结果。
我希望它保留顺序并返回结果 4,5,2,6。
谢谢,
最佳答案
要按数组中的顺序对结果进行排序,您可以执行以下操作:
$array_of_ordered_ids = array(4,5,2,6);
由于您已经知道数字的顺序,因此可以使用 Mysql FIELD()
Docs功能:
ORDER BY FIELD(id, 4, 5, 2, 6);
要创建这样的字符串,您可以使用 implode
Docs :
$order = sprintf('FIELD(id, %s)', implode(', ', $array_of_ordered_ids));
试一试:
$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);
关于php - Mysql Codeigniter Active Record - 如何执行 where_in 查询并返回正确的结果顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7443284/