Doctrine 2 - ORM
  1. Doctrine 2 - ORM
  2. DDC-2842

Leave out discriminator part of Doctrine' generated SQL

    Details

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

      Description

      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.

        Activity

        There are no comments yet on this issue.

          People

          • Assignee:
            Benjamin Eberlei
            Reporter:
            Roel
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated: