如何使用Active Record Codeigniter使用where_in?

时间:2016-03-05 07:50:29

标签: php codeigniter activerecord

我想使用Active Record将数组传递给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子句呢?我在这里很困惑。

4 个答案:

答案 0 :(得分:0)

你可以这样做:

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

假设$cat_id包含要检查的值数组。

答案 1 :(得分:0)

您需要将结果(行数组)转换为第一个"列中的值数组"这些行:

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

你可能应该在使用之前检查$ ids是否为空 - 因为(我不记得,但我认为)where_in会愉快地生成无效

SELECT ... WHERE id IN ()

如果你传递一个空数组。

答案 2 :(得分:0)

HFILE file = OpenFile(path, buff, OF_SHARE_EXCLUSIVE);
ReadFile(file, ...);  // read all content of file
ClearFileContent(file);  // here I need such a function to clear content of file
CloseHandle(file);  // close file handle

答案 3 :(得分: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);
}

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