我们如何在 codeigniter 中使用 or_where_in 和其他 where 条件
how can we use or_where_in along with other where condition in codeigniter
这里卡住了 or_where_in
condition.while 使用此条件结果正确获取这是我的代码请看一下
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
结果将获得 correctly.how 以编写正确的语法使用 or_where_in
.i 写了 where_in
而不是 or_where_in
但没有显示任何内容并且我使用的是 codeigniter 3.1.5 版本
我不知道这是否是您想要做的,但由于 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();
}
编辑:这比简单地添加分组要复杂一些。已更新以检查所有可能性。
这里卡住了 or_where_in
condition.while 使用此条件结果正确获取这是我的代码请看一下
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
结果将获得 correctly.how 以编写正确的语法使用 or_where_in
.i 写了 where_in
而不是 or_where_in
但没有显示任何内容并且我使用的是 codeigniter 3.1.5 版本
我不知道这是否是您想要做的,但由于 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();
}
编辑:这比简单地添加分组要复杂一些。已更新以检查所有可能性。