Sie können Native SQL und Karte Ergebnisse Einheiten verwenden:
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();
Sie die verwenden können [Abfrage-builder] (http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/abfrage-bui lder.html) um diese Abfrage zu erstellen. – thhan
@than, ich kann dort keine Informationen für meinen Fall finden. Nur für SELECT aus Tabelle (entity), nicht aus zwei verbundenen SELECTs. Wenn Sie wissen, wie man das macht, können Sie ein Beispiel geben? –
Sie können zwei vorherige queryBuilder als Quelle für Ihre 'from' verwenden. – Veve