Symfony 教条2“;“订购”;“之前”;分组方式;

Symfony 教条2“;“订购”;“之前”;分组方式;,symfony,doctrine-orm,dql,Symfony,Doctrine Orm,Dql,我知道三年前有人问过类似的问题(),但也许从那时起,情况发生了变化 我有两个实体属性: orderId orderUpdateDate 两者作为一对都被设置为唯一的,但对于清单,我需要最后更新日期,所以排序应该是唯一的 order by orderUpdateDate DESC 然后按orderId分组,这样我只有一次订单 group by orderId 问题是,当我在query builder中的一个查询中粘贴这两个查询时,我得到了随机的订单列表,要获得这样的结果,您必须使用以下SQL

我知道三年前有人问过类似的问题(),但也许从那时起,情况发生了变化

我有两个实体属性:

orderId
orderUpdateDate
两者作为一对都被设置为唯一的,但对于清单,我需要最后更新日期,所以排序应该是唯一的

order by orderUpdateDate DESC
然后按orderId分组,这样我只有一次订单

group by orderId

问题是,当我在query builder中的一个查询中粘贴这两个查询时,我得到了随机的订单列表

,要获得这样的结果,您必须使用以下SQL查询:

不幸的是,Doctrine的DQL不支持
FROM
子句中的嵌套查询。但是,它允许您创建可由ORM映射的自定义:

$rsm = new ResultSetMappingBuilder($em);
$rsm->addRootEntityFromClassMetadata('MyProject\\Order', 'o');

$sql = sprintf('SELECT %s FROM (SELECT ...) GROUP BY ...', $rsm->generateSelectClause());

$query = $em->createNativeQuery($sql, $rsm);
$result = $query->getResult();

我不得不在主查询中添加“orderbyn.update_date”,现在效果很好。非常感谢您的帮助。是否可以通过某种方式将“count(n.id)as id_num”添加到此类查询中,以便在结果中也包含每个订单的订单更新数?我试过了,查询还可以,但不知道如何使用这个值,因为symfony说没有方法id_numIt不起作用@Crozin
$rsm = new ResultSetMappingBuilder($em);
$rsm->addRootEntityFromClassMetadata('MyProject\\Order', 'o');

$sql = sprintf('SELECT %s FROM (SELECT ...) GROUP BY ...', $rsm->generateSelectClause());

$query = $em->createNativeQuery($sql, $rsm);
$result = $query->getResult();