Hinweis: Dies ist ein ORM Einschränkung reported on the project's issue trackerDoctrine2: Willkürliche beitreten und einzelne Tabelle Vererbung
Ich bin ein Problem mit Blick auf den Aufbau einer DQL Abfrage mit der willkürlichen Syntax in Lehre 2.3 auf einer Entity-Klasse eingeführt beitreten Das ist die Wurzel einer Hierarchie.
Unter diesen Klassen:
A - kein Erbe
B1 - abstrakt, Wurzel einer Hierarchie, Diskriminator Spalte 'Typ' genannt
ich ein Setup Query Builder wie dies:
$qb->select('a.id AS idA, b.id AS idB')
->from('\Entity\A', 'a')
->leftJoin('\Entity\B1', 'b', \Doctrine\ORM\Query\Expr\Join::WITH, 'a.something=b.something');
Und die SQL-Doktrine generiert wird so etwas wie dieses:
SELECT a.id, b.id FROM a LEFT JOIN b ON (a.something=b.something) WHERE b.type IN ('1', '2', '3')
Die Probleme ist, dass die, wo die macht nutzlos kommen gelassen.
Gibt es eine Möglichkeit zu erzwingen, dass die Bedingung auf der Diskriminatorspalte in den Join gesetzt wird? Zumindest würde das ...
Sollte ich einen Fehlerbericht ausfüllen?
Nun, ich alle A-Elemente abrufen möchten, sogar jene, die so eine innere keine B haben Join würde nicht helfen. Tatsächlich ist das aktuelle Verhalten das gleiche wie wenn ich einen inneren Join wegen der Where-Bedingung in der b.type-Spalte verwendet hätte. – Jay