这里遇到了or_where_in
条件。虽然使用这个条件,结果是正确获取这里是我的代码请看看
public function get_date_wise_sales_info($start_date, $end_date,$type=NULL,$user_id=NULL,$get_all_user_ids=NULL)
{
if(!empty($type))
{
$this->db->where('type',$type);
}
if(!empty($user_id))
{
$this->db->where('user_id', $user_id);
}
if(!empty($get_all_user_ids))
{
$this->db->or_where_in('user_id',$get_all_user_ids);
}
$this->db->where("DATE(bills.created_at) BETWEEN '{$start_date}' AND '{$end_date}'");
$this->db->order_by('bills.id','desc');
$query = $this->db->get('bills');
return $query->result();
}
这里使用or_where_in
条件未选择dates
的结果即将到来,如果我删除or_where_in
,结果是正确获取的。如何写出使用{{1的正确语法我写了or_where_in
而不是where_in
但是没有显示任何内容并使用codeigniter 3.1.5版本
答案 0 :(得分:1)
我不知道你是否正在尝试做什么,但由于OR声明你可能需要使用query grouping。
public function get_date_wise_sales_info($start_date, $end_date,$type=NULL,$user_id=NULL,$get_all_user_ids=NULL)
{
if(!empty($type))
{
$this->db->where('type',$type);
}
if(!empty($user_id) && !empty($get_all_user_ids))
{
// Check for both, with OR
$this->db->group_start();
$this->db->where('user_id', $user_id);
$this->db->or_where_in('user_id',$get_all_user_ids);
$this->db->group_end();
}
else if(!empty($user_id))
{
// Only check for $user_id
$this->db->where('user_id', $user_id);
}
else if(!empty($get_all_user_ids))
{
// Only check for $get_all_user_ids
$this->db->where_in('user_id', $get_all_user_ids);
}
$this->db->where("DATE(bills.created_at) BETWEEN '{$start_date}' AND '{$end_date}'");
$this->db->order_by('bills.id','desc');
$query = $this->db->get('bills');
return $query->result();
}
编辑:这比简单地添加分组要复杂一些。更新以检查所有可能性。