2016-03-05 81 views
1

我想使用Active Record将数组传递给where_in。如何使用Active Record Codeigniter使用where_in?

只见几个参考链接,可以通过这样的:

$this->db->where_in('id', array('20','15','22','42','86')); 

查询:

$mts = $this->db->select('subcat_id')->get_where('subcategory_tbl', array('cat_id' => $cat_id)); 
$result = $mts->result_array(); 

但以这种形式我的结果数组:

Array 
(
    [0] => Array 
     (
      [subcat_id] => 12 
     ) 

    [1] => Array 
     (
      [subcat_id] => 13 
     ) 
) 

所以,我怎么能将此数组id传递给where_in子句?我很困惑。

回答

0

你可以不喜欢它:

$this->db->where_in('cat_id', $cat_id) 
$this->db->select('subcat_id'); 
$this->db->get('subcategory_tbl'); 

假设$cat_id包含的值来检查的阵列。

0

你需要你的结果(行数组)转换为这些行的第一个“列”的值的数组:

$ids = array_map(function($row) { return $row['subcat_id']; }, $result); 

你或许应该检查$ IDS是不使用前空它 - 因为(我不记得,但我认为)where_in会很乐意产生无效

SELECT ... WHERE id IN()

如果你传递一个空数组。

0
$names = array('Frank', 'Todd', 'James'); 
$this->db->where_in('username', $names); 
0

用你的第一个查询像

$mts = $this->db->select('GROUP_CONCAT(subcat_id) as new')->get_where('subcategory_tbl', array('cat_id' => $cat_id))->row()->new; 

然后用

if($mts != "") 
{ 
    $this->db->where_in('id', $mts); 
} 

希望它可以帮助你....

+0

不会 - >行() - > subcat_id只是获取* first *行的subcat_id? –

+1

@ShadowRadiance我在这里使用'GROUP_CONCAT' ... :) –

+0

我完全错过了GROUP_CONCAT ...你是不是还要爆炸$ mts来传递一个数组到where_in或者它会处理一个这样的字符串? –

相关问题