Lassen Sie den Diskriminatorteil von Doctrine 'generiertem SQL aus

Angenommen, das FolgendeAbstractPage Modell:

/*
 *     @ORM\Entity
 *     @ORM\Table(name="page")
 *     @ORM\InheritanceType("SINGLE_TABLE")
 *     @ORM\DiscriminatorColumn(name="type", type="string")
 *     @ORM\DiscriminatorMap
 *     ({
 *         "page" = "Page",
 *         "link" = "Link"
 *     })
 */

Und die folgende DQL-Abfrage:

SELECT p FROM \Page\Model\AbstractPage

Die generierte SQL ist:

SELECT ... FROM page p0_ WHERE p0_.type IN ('page', 'link')

Nun zur Frage: Wie kann ich das entfernen?WHERE Klausel aus dieser Abfrage. Bei komplexeren Abfragen ist dieser Teil derWHERE Klausel macht es nicht möglich, einige Indizes zu verwenden, die definiert sind. Dies kann durch Hinzufügen behoben werdentype zu den Indizes, aber das macht meine Indizes größer und ich denke, dass dies nicht notwendig ist.

DasAbstractPage ist die Wurzel im Vererbungsbaum. Daher interessieren uns ALLE Datensätze in der Tabelle. Weglassen derWHERE Teil macht genau das.

Die Frage ist also: Wie kann ich Doctrine dazu bringen, dies zu entfernen?WHERE Teil, wo es nicht notwendig ist.

Vielen Dank!

Antworten auf die Frage(1)

Ihre Antwort auf die Frage