【发布时间】:2015-11-24 11:44:58
【问题描述】:
这是我的映射:
$rsm = new ResultSetMapping;
$rsm->addEntityResult('OOHMediaBundle:OfferItem', 'i');
$rsm->addFieldResult('i', 'reserved_at', 'reservedAt');
$rsm->addJoinedEntityResult('OOHMediaBundle:Offer', 'o', 'i', 'offer');
$rsm->addFieldResult('o', 'o_id', 'id');
$rsm->addFieldResult('o', 'continue_from', 'continueFrom');
$rsm->addFieldResult('o', 'continue_to', 'continueTo');
这是我的原生查询:
$qb = $this->registry->getEntityManager()->createNativeQuery(
'SELECT i.reserved_at, o.id AS o_id, o.continue_from, o.continue_to
FROM offer_item AS i
LEFT JOIN offers AS o ON i.offer_id = o.id
WHERE i.reserved_at IS NOT NULL
;',
$rsm
);
如果上面的 SQL 被复制到 mysql 客户端,它会产生 43 条记录。
当以$qb->getArrayResult(); 执行时,它只返回1 记录。
当以$qb->getResult(); 执行时,它会返回异常:
[Symfony\Component\Debug\Exception\ContextErrorException]
Notice: Undefined index: offer_id
其他42条记录在哪里消失了?
【问题讨论】:
-
你试过
$qb->getResult();吗? -
尝试将
i.id添加到字段结果中。据我记得AI列也是必需的还要记住选择子句的顺序很重要,并且需要匹配addFieldResult()中的顺序。 -
我在那个表中没有 id :( 它的 M2M 加入表没有 ids...
-
@Artamiel 请将您的评论变成答案。这确实是我需要的。 (谢天谢地,还有其他各种原因还需要“id”!)
标签: symfony doctrine-orm doctrine-native-query