实际开发中,遇到一个问题,像下面的代码:
/* 获取明细列表 */ 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]); } }