您可以使用Native SQL和地图查询结果的实体:
use Doctrine\ORM\Query\ResultSetMapping;
$rsm = new ResultSetMapping;
$rsm->addEntityResult('AppBundle:Charges', 'charges')
->addEntityResult('AppBundle:Refunds', 'refunds')
->addFieldResult('charges', 'id', 'id')
->addFieldResult('charges', 'currency', 'currency')
->addFieldResult('charges', 'total_transactions', 'total_transactions')
->addFieldResult('charges', 'total_volume', 'total_volume')
->addFieldResult('charges', 'commission', 'commission')
->addFieldResult('refunds', 'total_payouts', 'total_payouts')
;
$sql = "
SELECT
charges.id,
charges.currency,
charges.total_transactions,
charges.total_volume,
charges.commission,
refunds.total_payouts
FROM
(SELECT ...very long query...) charges
LEFT JOIN
(SELECT ...very long query...) refunds ON charges.id = refunds.id AND charges.currency = refunds.currency
WHERE some_field = ?
";
$query = $this->getEntityManager()->createNativeQuery($sql, $rsm);
$query->setParameter(1, $name);
$entities = $query->getResult();
您可以使用[查询生成器](http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference /查询BUI lder.html)来创建这个查询。 – thhan
@thhan,我找不到任何有关我的情况的信息。仅用于表(实体)的SELECT,而不是来自两个连接的SELECT。如果你知道如何做到这一点,你可以提供一个例子吗? –
你可以使用两个先前的queryBuilder作为你的'from'的源码 – Veve