Deixe de fora a parte discriminadora do SQL gerado pelo Doctrine
Assuma o seguinteAbstractPage
modelo:
/*
* @ORM\Entity
* @ORM\Table(name="page")
* @ORM\InheritanceType("SINGLE_TABLE")
* @ORM\DiscriminatorColumn(name="type", type="string")
* @ORM\DiscriminatorMap
* ({
* "page" = "Page",
* "link" = "Link"
* })
*/
E a seguinte consulta DQL:
SELECT p FROM \Page\Model\AbstractPage
O SQL gerado será:
SELECT ... FROM page p0_ WHERE p0_.type IN ('page', 'link')
Agora para a pergunta: como posso remover oWHERE
cláusula desta consulta. Em consultas mais complexas, essa parte doWHERE
cláusula torna impossível usar alguns índices que são definidos. Isso pode ser resolvido adicionandotype
para os índices, mas isso faz meus índices maiores e eu sinto que isso não é necessário.
oAbstractPage
é a raiz na árvore de herança. Assim, estamos interessados em TODOS os registros da tabela. Omitindo oWHERE
parte faz exatamente isso.
Então a questão é: como posso fazer o Doctrine remover esteWHERE
parte onde não é necessário.
Obrigado!