Codeigniter 使用where子句时如何避免结果数组中的重复行

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

我需要应用我从控制器发送的时间和time=double的用户的名称,因此我需要显示此函数的结果,但它会复制结果,是否有办法解决此问题

在特定日期选择time=double的用户的名称将显示在Daily上

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))你能帮我一下吗?