Uploaded image for project: 'Doctrine 2 - ORM'
  1. Doctrine 2 - ORM
  2. DDC-2842

Leave out discriminator part of Doctrine' generated SQL


    • Type: Improvement
    • Status: Open
    • Priority: Minor
    • Resolution: Unresolved
    • Affects Version/s: 2.4.1
    • Fix Version/s: None
    • Component/s: DQL
    • Labels:


      Assume the following AbstractPage model:


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


      And the following DQL query:

      SELECT p FROM \Page\Model\AbstractPage

      The generated SQL will be:

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

      Now to the question: how can I remove the WHERE clause from this query. On more complex queries this part of the WHERE clause makes it not possible to use some indexes that are defined. This can be resolved by adding type to the indexes, but this makes my indexes larger and I feel this is not necessary.

      The AbstractPage is the root in the inheritance tree. Thus we are interested in ALL records in the table. Omiting the WHERE part does precisely that.

      So the question is: how can I make Doctrine remove this WHERE part where it is not necessary.


        There are no comments yet on this issue.


          • Assignee:
            beberlei Benjamin Eberlei
            roelvd Roel
          • Votes:
            0 Vote for this issue
            1 Start watching this issue


            • Created: