我想使用一个select来获取带有doctrines querybuilder的实体数组。但我需要一个使用foreign属性(与外键相关的表中的属性)的ORDER BY
。我想凭直觉写的东西是这样的:
$repo = $this->getDoctrine()->getRepository('MyBundle:relation_table');
$query = $repo->createQueryBuilder('r')
->orderBy('r.fevent.date', 'DESC')
->getQuery();
毫不奇怪,这是行不通的。在sql中,my
SELECT
如下所示:SELECT r.* FROM relation_table AS r
INNER JOIN events AS e
ON e.IDevent = r.Fevent
ORDER BY e.date
但我也需要教义把实体对象还给我。我想到了两种可能的解决方案:
使用querybuilder创建
INNER JOIN
,或创建一个自由的sql语句,如上所述,并告诉doctrine以某种方式创建一个实体对象及其结果。
有什么线索吗?谢谢。
最佳答案
您需要加入要订购的实体:
$query = $repo->createQueryBuilder('r')
->join('r.fevent', 'f')
->orderBy('f.date', 'DESC')
->getQuery()
;