我的模型中有这个查询:
public function getById(int $id): ?array
{
$query = $this->db->select(['id', 'docent_id', 'date', 'start_at', 'end_at'])
->where('docent_id', $id)
->where('delete_date is null')
->get('Agenda');
$res = $query->result();
return $res;
}
我的问题是在我的数据库中,我有类似的东西:
| id | docent_id | date | start_at | end_at
| 1 | 1 | 2020-05-04 | 09:00 | 10:00
| 2 | 1 | 2020-05-04 | 10:00 | 11:00
因此,这个结果为相同的docent_id打印了两个字段。我会把答案分组,这样日期就不会重复两次,这样它就会给我一个单一的结果,对于同一个文档,相同的日期,不同的开始和结束时间。
我该怎么办?感谢
我认为您需要的是GROUP BY
。只有当所有4个(docent_id
、date
、start_at
和end_at
(的组合不同时,下面的查询才会显示数据。看看这是否对你有帮助。
$query = $this->db->select(['id', 'docent_id', 'date', 'start_at', 'end_at'])
->where('docent_id', $id)
->where('delete_date is null')
->group_by(array("docent_id", "date", "start_at", "end_at"))
->get('Agenda');
$res = $query->result();