使用通用参数查询2个不同的实体以对它们进行排序

时间:2015-08-21 09:32:46

标签: php symfony doctrine-orm doctrine union

我有2个实体:事件和卡片他们都有'position'字段,我想要全部检索它们并按照数组中的位置对它们进行排序。

所以我会得到类似的东西:

array('Card_1 (position 1)', 'Event_3 (position 2)', 'Event 2 (position 3)', 'Card 2 (position 4)')等等。

通常我会在Native SQL中使用类似UNION的东西,使用Doctrine有更简单的方法吗?

1 个答案:

答案 0 :(得分:0)

我无法使用本机查询,因为它让我获得了基数问题,并且使用映射的超类不是一个选项,因为这类类无法进行查询。

我分别检索了两组实体,合并了数组并使用了usort来完成这项工作:

$result = array_merge($events, $cards);
usort($result,  function($a, $b) { return strcmp($a->getPosition(), $b->getPosition()); });

如果有人想出一个使用Doctrine的更好的解决方案,我很想看到它。