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

Joining Associations in Single Inheritance Scheme

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Can't Fix
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: None
    • Security Level: All
    • Labels:
      None

      Description

      Let's assume the following class hierarchy:

      AbstractComment
      SpecialComment extends AbstractComment
      {
          private $specialAssociation;
      }
      RegularComment extends RegularComment
      

      Now, I'd like to write a query such as:

      SELECT c, a FROM AbstractComment c LEFT JOIN c.specialAssociation a
      

      The idea is to preload the association when selecting all comments. Now, that association is only present on a sub-class of the queried class, but since it is a single table inheritance, Doctrine should be able to join it for those entities where it is present.

      At the moment unfortunately, Doctrine shows an error that the association does not exist on the AbstractComment class. Also, there is no real alternative to this except moving the collection to the base class even if it does not belong there.

        Activity

        johannes Johannes Schmitt created issue -
        johannes Johannes Schmitt made changes -
        Field Original Value New Value
        Description Let's assume the following class hierarchy:

        {code}
        AbstractComment
        SpecialComment extends AbstractComment
        {
            private $specialAssociation;
        }
        RegularComment extends RegularComment
        {/code}

        Now, I'd like to write a query such as:

        {code}
        SELECT c, a FROM AbstractComment c LEFT JOIN c.specialAssociation a
        {code}

        The idea is to preload the association when selecting all comments. Now, that association is only present on a sub-class of the queried class, but since it is a single table inheritance, Doctrine should be able to join it for those entities where it is present.

        At the moment unfortunately, Doctrine shows an error that the association does not exist on the AbstractComment class. Also, there is no real alternative to this except moving the collection to the base class even if it does not belong there.
        Let's assume the following class hierarchy:

        {code}
        AbstractComment
        SpecialComment extends AbstractComment
        {
            private $specialAssociation;
        }
        RegularComment extends RegularComment
        {code}

        Now, I'd like to write a query such as:

        {code}
        SELECT c, a FROM AbstractComment c LEFT JOIN c.specialAssociation a
        {code}

        The idea is to preload the association when selecting all comments. Now, that association is only present on a sub-class of the queried class, but since it is a single table inheritance, Doctrine should be able to join it for those entities where it is present.

        At the moment unfortunately, Doctrine shows an error that the association does not exist on the AbstractComment class. Also, there is no real alternative to this except moving the collection to the base class even if it does not belong there.
        beberlei Benjamin Eberlei made changes -
        Status Open [ 1 ] Resolved [ 5 ]
        Resolution Can't Fix [ 7 ]

          People

          • Assignee:
            beberlei Benjamin Eberlei
            Reporter:
            johannes Johannes Schmitt
          • Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: