实际开发中,遇到一个问题,像下面的代码:

/* 获取明细列表 */
public function getMoneyList($whereArr, $offset=0, $perpage=10, $order='', $orderVal='') {
    $result = ARRAY();
    $this->CI->db->select('id,money,add_time,user_id,user_account,category_id,note,score_id,update_time');
    if (!empty($order) && !empty($orderVal) ) $this->CI->db->order_by($order, $orderVal);
    if (!empty($whereArr)) $this->CI->db->where($whereArr);
    if (!empty($perpage)) $this->CI->db->limit($perpage, $offset);
    $query = $this->CI->db->get('om_detail');
    if ($query->num_rows() == 0) return $result;

    foreach ($query->result_array() as $row)
        $result[$row['id']] = $row;

    return $result;
}

这是一个获取明细列表的方法,只要传递条件数组、偏移量、分页、及排序和值就可以将所需要的明细返回过来。

现在有一个问题是,我想获取多个category_id;我不知道怎么取了。

我查询了CI手册里面的,可以使用where_in,但是,不知道怎么与这个方法相结合。

期望大家指点下。

另外,手册上是,可以使用
自定义 key/value 方法: 你可以在第一个参数中包含一个运算符,以便控制比较:

$this->db->where('name !=', $name);
 $this->db->where('id <', $id);

// 生成: WHERE name != 'Joe' AND id < 45

上面介绍了,大于、小于之类的“隐含式操作符”,能不能使用IN呢?怎么写?

感谢,一叶扁舟的帮助:
$whereArr = array(‘category_id’=>array(ID)……)以数组形式写入whereArr
函数中判读ID个数
为1的话就直接上文中操作
>1 先where_in(‘category_id’,$whereArr) 然后unset掉$whereArr[‘category_id’],再where($whereArr)

修改后的:

foreach ($whereArr as $key => $val) {
        if (is_array($val)) {
            $this->CI->db->where_in($key, $val);
            unset($whereArr[$key]);
        }
}

引自:http://codeigniter.org.cn/forums/thread-18564-1-1.html