Doctrine 2 - ORM
  1. Doctrine 2 - ORM
  2. DDC-2032

DQL fails for Joined Inheritance with Associations on child classes

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Critical Critical
    • Resolution: Invalid
    • Affects Version/s: 2.3
    • Fix Version/s: None
    • Component/s: DQL
    • Security Level: All
    • Labels:
    • Environment:
      Windows XAMPP

      Description

      I have the following object hierarchy:

      Clazz A with Joined Table Inheritance
      Clazz B extends A
      Clazz C extends A with an association (n:1) to D
      Clazz D

      I am doing a DQL query 'SELECT u FROM A u'

      If I just have As and Bs in the DB everything is fine. But I there is a C in there I get the following error:

      Notice: Trying to get property of non-object in X:\Zend_Workspace\goalio_application\vendor\doctrine\orm\lib\Doctrine\ORM\Internal\Hydration\ObjectHydrator.php on line 479

      Fatal error: Call to a member function fetch() on a non-object in X:\Zend_Workspace\goalio_application\vendor\doctrine\orm\lib\Doctrine\ORM\Internal\Hydration\ObjectHydrator.php on line 148

      When I debug the _rsm of the Hydrator is null when trying to hydrate the row for C.

      Any ideas?

        Activity

        Hide
        Marco Pivetta added a comment -

        Philipp Dobrigkeit this is known. You have to pass a custom hydrator to the new query if you use DQL during PostLoad events.

        Show
        Marco Pivetta added a comment - Philipp Dobrigkeit this is known. You have to pass a custom hydrator to the new query if you use DQL during PostLoad events.
        Hide
        Philipp Dobrigkeit added a comment -

        Ok, further investigations on my part have found the problem to be somewhere else entirely... Not sure yet if it is a bug, but the problem arises because during the hydration my application does another query, which uses the same hydrator object and thus does cleanup before the initial query is complete. That results in the _rsm being null when the original hydration continues. Will see if that can be fixed in my application.

        Show
        Philipp Dobrigkeit added a comment - Ok, further investigations on my part have found the problem to be somewhere else entirely... Not sure yet if it is a bug, but the problem arises because during the hydration my application does another query, which uses the same hydrator object and thus does cleanup before the initial query is complete. That results in the _rsm being null when the original hydration continues. Will see if that can be fixed in my application.
        Hide
        Philipp Dobrigkeit added a comment -

        Ok, it doesn't seem related to inheritance. Have the same problem now as well with a Join DQL query.

        Foo (1:n) Bar
        Bar (1:n) Baz

        SELECT c FROM Foo c INNER JOIN c.bar cj WITH cj.id IN(1)

        Gives me the same error as above when it tries to hydrate Bar

        Show
        Philipp Dobrigkeit added a comment - Ok, it doesn't seem related to inheritance. Have the same problem now as well with a Join DQL query. Foo (1:n) Bar Bar (1:n) Baz SELECT c FROM Foo c INNER JOIN c.bar cj WITH cj.id IN(1) Gives me the same error as above when it tries to hydrate Bar

          People

          • Assignee:
            Benjamin Eberlei
            Reporter:
            Philipp Dobrigkeit
          • Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: