我想使用select来获取Doctrines QueryBuilder的实体数组。但我需要一个ORDER BY
使用外来属性(与外键相关的表中的属性)。我想直观地写的是这样的:
$repo = $this->getDoctrine()->getRepository('MyBundle:relation_table');
$query = $repo->createQueryBuilder('r')
->orderBy('r.fevent.date', 'DESC')
->getQuery();
毫不奇怪,这不起作用。在SQL中,SELECT
看起来像这样:
SELECT r.* FROM relation_table AS r
INNER JOIN events AS e
ON e.IDevent = r.Fevent
ORDER BY e.date
但是我也需要Doctrine给我实体对象。我想到了两种可能的解决方案:
INNER JOIN
或任何提示?感谢。
答案 0 :(得分:2)
您需要加入您想要订购的实体:
$query = $repo->createQueryBuilder('r')
->join('r.fevent', 'f')
->orderBy('f.date', 'DESC')
->getQuery()
;
答案 1 :(得分:0)
加入Doctrine Query中的两个表(你提出的第一个解决方案)非常简单。看看这里:http://symfony.com/doc/2.0/book/doctrine.html#joining-to-related-records
这里回答了类似的问题:Doctrine 2: How to search for an entity by its association's value?