Zostaw część dyskryminatora wygenerowanego przez Doctrine SQL
Załóżmy, co następujeAbstractPage
Model:
/*
* @ORM\Entity
* @ORM\Table(name="page")
* @ORM\InheritanceType("SINGLE_TABLE")
* @ORM\DiscriminatorColumn(name="type", type="string")
* @ORM\DiscriminatorMap
* ({
* "page" = "Page",
* "link" = "Link"
* })
*/
I następujące zapytanie DQL:
SELECT p FROM \Page\Model\AbstractPage
Wygenerowany SQL będzie:
SELECT ... FROM page p0_ WHERE p0_.type IN ('page', 'link')
Teraz pytanie: jak mogę usunąćWHERE
klauzula z tego zapytania. W bardziej złożonych zapytaniach ta częśćWHERE
klauzula uniemożliwia użycie niektórych zdefiniowanych indeksów. Można to rozwiązać dodająctype
do indeksów, ale to sprawia, że moje indeksy są większe i uważam, że nie jest to konieczne.
TheAbstractPage
to root w drzewie dziedziczenia. Dlatego interesują nas WSZYSTKIE rekordy w tabeli. PomijającWHERE
część robi dokładnie to.
Pytanie brzmi: jak mogę usunąć DoctrineWHERE
część tam, gdzie nie jest to konieczne.
Dzięki!