Doctrine 2 - ORM
  1. Doctrine 2 - ORM
  2. DDC-1452

ObjectHydrator bug: hydration of entity with self (cyclic) relation through ref entity

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Critical Critical
    • Resolution: Fixed
    • Affects Version/s: 2.1, 2.1.1, 2.1.2
    • Fix Version/s: 2.2
    • Component/s: ORM
    • Security Level: All
    • Labels:
      None

      Description

      ObjectHydrator has bug in hydrate entities with relation to entity of this same class throught reference entity. Example Model:

      EntityA

      • id
      • title (string)
      • entitiesB (annotation: @ORM\OneToMany(targetEntity="EntityB", mappedBy="entityAFrom"))

      EntityB

      • id
      • entityAFrom (annotation: @ORM\ManyToOne(targetEntity="EntityA", inversedBy="entitiesB"))
      • entityATo (annotation: @ORM\ManyToOne(targetEntity="EntityA"))
      • type (string)

      Scenario:

      Execution of dql query 'SELECT a, b, ba FROM EntityA AS a LEFT JOIN a.entitiesB AS b LEFT JOIN b.entityATo AS ba' with max results set to "1" and data in database:

      EntityATable:
      id | title
      1 | a
      2 | b

      EntityBTable:
      id | entityAFromId | entityAToId | type
      1 | 1 | 2 | type

      Resume:

      I expected collection of EntityA object (size=1 becouse I set max results to 1) with hydrated entitiesB collection (size=1 becouse in db is only 1 record) and hydrated entityTo object. entitiesB property of entityTo object should be empty PersistCollection (ready to lazy load) but is null...

      I can provide TestCase for this issue.

      1. DDC1452Test.php
        2 kB
        Piotr Śliwa
      2. DDC1452Test.php
        2 kB
        Benjamin Eberlei

        Activity

          People

          • Assignee:
            Benjamin Eberlei
            Reporter:
            Piotr Śliwa
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: