用一个公共参数查询2个不同的实体,对它们进行排序


Querying 2 different entities with a common parameter to sort them

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

所以我会得到这样的东西:

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

通常我会在本地SQL中使用UNION之类的东西,是否有更简单的方法使用Doctrine ?

我不能使用本机查询,因为它会给我带来基数问题,使用映射的超类不是一个选择,因为这种类型的类无法查询。

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

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

如果有人用Doctrine提出更好的解决方案,我很想看看。