2016-03-05 100 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或者它會處理一個這樣的字符串? –

相關問題