我有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提出更好的解决方案,我很想看看。