这是我的桌子:
id | place | date | valid
1 | ONE | 10/12/2019 | true
2 | ONE | 11/12/2019 | true
3 | ONE | 12/12/2019 | true
4 | ONE | 13/12/2019 | false
5 | ONE | 14/12/2019 | false
6 | TWO | 10/12/2019 | true
7 | TWO | 11/12/2019 | true
8 | TWO | 12/12/2019 | true
9 | TWO | 13/12/2019 | true
10 | TWO | 14/12/2019 | false
11 | OTH | 10/12/2019 | true
12 | OTH | 11/12/2019 | true
13 | OTH | 12/12/2019 | true
14 | OTH | 13/12/2019 | true
15 | OTH | 14/12/2019 | true
我正在尝试使用doctrine和QueryBuilder来获取表的ID。 我需要通过有效等于“ true”的位置获取MAX日期的ID。 随着数据的显示,我想要得到这个结果:
3 | ONE | 12/12/2019 | true
9 | TWO | 13/12/2019 | true
15 | OTH | 14/12/2019 | true
我尝试了一些查询生成器,但无法获得想要的结果。
$qb = $this->createQueryBuilder("o");
$qb->select('o.id,o.place');
$qb->addSelect($qb->expr()->max('o.date').' AS maxDate');
$qb->andWhere($qb->expr()->eq('o.valid',true));
$qb->groupBy('o.place');
我也尝试过使用子查询,但是我在对位置进行分组,获取最大日期并返回ID 3/9和15时遇到问题。
如何获取最长日期并按行对行进行分组?
谢谢