Paw*_*dej 3 dql symfony doctrine-orm
我知道类似的问题是在3年前被问过的(Doctrine2在By By之前排序)但也许从那时起事情发生了变化.
我有2个实体财产:
orderId
orderUpdateDate
Run Code Online (Sandbox Code Playgroud)
两者都被设置为唯一,但对于列表我需要上次更新日期,所以排序应该是
order by orderUpdateDate DESC
Run Code Online (Sandbox Code Playgroud)
然后按orderId分组,所以我只有一次订单.
group by orderId
Run Code Online (Sandbox Code Playgroud)
问题是,当我在查询构建器中的一个查询中粘贴时,我得到了订单的随机列表
要实现这样的结果,您必须最终得到以下SQL查询:
SELECT n.id, n.update_date
FROM (
SELECT o.id, o.update_date
FROM orders o
ORDER BY o.update_date DESC
) n
GROUP BY n.id;
Run Code Online (Sandbox Code Playgroud)
不幸的是,Doctrine的DQL不支持FROM子句中的嵌套查询.但是,它允许您创建可由ORM映射的自定义本机SQL查询:
$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();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3174 次 |
| 最近记录: |