【发布时间】:2016-10-13 13:46:45
【问题描述】:
当我尝试映射加入子查询选择的结果时,我遇到了 symfony 和教义创建本机查询的问题。我得到前连接字段的空结果。 ad.availability 为 null 。
基本上我有 2 个表活动和活动日期。我需要获得每个活动的最低价格。 SQL 工作正常。但卡在映射中。
有什么想法吗?
谢谢
$rsm = new ResultSetMapping;
$rsm->addEntityResult('ActivityBundle:Activity', 'ac');
$rsm->addEntityResult('ActivityBundle:ActivityDate', 'ad');
$rsm->addFieldResult('ac', 'id', 'id');
$rsm->addFieldResult('ac', 'title', 'title');
$rsm->addFieldResult('ad','availability','availability');
$sql = 'SELECT
ac.id,
ac.title,
ac.price,
ad.availability
FROM
activities ac
LEFT JOIN
(SELECT
id,
date,
price,
activity_id,
availability
FROM
activity_dates a
WHERE
price = (
SELECT
MIN(price)
FROM
activity_dates b
WHERE
b.activity_id = a.activity_id
)
) ad
ON
ad.activity_id = ac.id';
$query = $this->_em->createNativeQuery($sql, $rsm)
->setHint(
\Doctrine\ORM\Query::HINT_CUSTOM_OUTPUT_WALKER,
'Gedmo\\Translatable\\Query\\TreeWalker\\TranslationWalker'
)
->setHint(
\Gedmo\Translatable\TranslatableListener::HINT_INNER_JOIN,
true
);
【问题讨论】:
-
如果您在没有教义的情况下运行查询手动填写值,它会返回您期望的结果吗?
-
是的。 sql 查询返回正确的值。
标签: symfony doctrine-orm