我们如何在codeigniter

时间:2018-03-23 07:15:14

标签: php where codeigniter-3 where-in

这里遇到了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版本

1 个答案:

答案 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();
}

编辑:这比简单地添加分组要复杂一些。更新以检查所有可能性。