在OR条件中where子句中的result_array()数据:活动记录Codeigniter

时间:2015-02-04 07:44:35

标签: codeigniter activerecord where-clause where-in

查询的result_array()给出以下内容:

Array ( [0] => Array ( [id] => 1 ) [1] => Array ( [id] => 4 ) ) 

我想在OR条件的where子句中使用id = 1和id = 4,如下所示:

$this->db->where_in('id',$query->result_array());

但上述原因导致错误。有没有直接的方法来做同样的事情?

4 个答案:

答案 0 :(得分:1)

您只需使用array_column

即可
array_column($query->result_array(), 'id')

这里是reference

答案 1 :(得分:1)

$result = $roleIdQuery->result_array();
$column = array_map(function($sub)
                           {
                               return $sub['id'];
                           }, $result);

我用过这个。不幸的是

答案 2 :(得分:0)

因为它在该数组中有数组。

  $ids=array();
  $resultArray=$query->result_array();
  foreach($resultArray as $result){
   $ids[]=$result['id'];
  }

$ ids //这就是你现在需要传递的内容..

答案 3 :(得分:0)

如果您更改原始查询以使用GROUP_CONCAT。不是Active Record中的选项,因此需要编写自己的SQL。

之类的东西
$query= $this->db->query('SELECT GROUP_CONCACT(id) AS ids FROM table WHERE condition=true');

然后你应该能够做到

$this->db->where_in('id',$query->result_array()[0]['ids']);

刚刚注意到你的5.3,不幸的是,这意味着你将不得不这样做。

$result = $query->result_array();

然后传入$result[0]['ids']