Codeigniter 使用where子句时如何避免结果数组中的重复行
我需要应用我从控制器发送的时间和time=double的用户的名称,因此我需要显示此函数的结果,但它会复制结果,是否有办法解决此问题 在特定日期选择time=double的用户的名称将显示在Daily上Codeigniter 使用where子句时如何避免结果数组中的重复行,codeigniter,codeigniter-3,Codeigniter,Codeigniter 3,我需要应用我从控制器发送的时间和time=double的用户的名称,因此我需要显示此函数的结果,但它会复制结果,是否有办法解决此问题 在特定日期选择time=double的用户的名称将显示在Daily上 public function get_Shifts($day,$time){ $this->db->select('user.fullname'); $this->db->from('shifts'); $this->db->joi
public function get_Shifts($day,$time){
$this->db->select('user.fullname');
$this->db->from('shifts');
$this->db->join('user', 'shifts.user_id = user.id', 'left');
$this->db->where('day=', $day);
$this->db->where('time=',$time);
$this->db->or_where('time=', $double);
$query = $this->db->get();
return $query->result_array();
}
我尝试添加这一行,但没有效果:
$this->db->distinct()代码>由于Codeigniter 3,您可以使用它的功能:
查询分组允许您按创建WHERE子句组
用括号括起来。这将允许您创建查询
带有复杂WHERE子句
在您的情况下,您可以使用:
$this->db->group_start()
$this->db->where('day', $day);
$this->db->where('time', $time);
$this->db->group_end()
$this->db->or_where('time', $double);
这将产生如下结果:
WHERE ( (`day` = '2020-04-23' AND `time` = '16:00' ) OR `time` = true )
编辑以响应注释:创建如下输出:WHERE((day='2020-04-23'和(time='16:00'或time=true))
您可以使用这种方法:
$this->db->where('day', $day);
$this->db->group_start()
$this->db->where('time', $time);
$this->db->or_where('time', $double);
$this->db->group_end()
注意:使用CI where()函数的正确方法是:
$this->db->where('day',$day);
而不是$this->db->where('day=',$day);
在使用
$this->db->where('day=',$day)
$this->db->where('time=',$time)
$this->db->or_其中('time=',$double)
使用where子句的正确方法
$this->db->where('day',$day)
$this->db->where('time',$time)
$this->db->or_其中('time',$double)
如果您获得的是上述查询的重复数据,请将列名传递给distinct-like:-
$this->db->distinct('user.fullname');好的,我喜欢这个小组的想法,但理想情况下,我需要它看起来像这样(天
='2020-04-23'和(时间
='16:00'或时间
=true))你能帮我一下吗?