Doctrine 2 - ORM
  1. Doctrine 2 - ORM
  2. DDC-455

E_NOTICE Undefined index when setting field to a property that is not persisted

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 2.0-BETA3
    • Component/s: None
    • Security Level: All
    • Labels:
      None

      Description

      Affects trunk.

      A and B have a One-To-One mapping, with A being the owning side of the relationship. No cascade persist is set.

      // Create entity A
      $a = new A();
      $em->persist($pt);
      $em->flush();
      
      echo "Created A {$b->getId()}\n";
      
      // Create B and add it to A
      $b = new B();
      $a->setB($b);
      //$em->persist($b); // oops, forgot
      
      $em->flush();
      
      echo "Created B {$b->getId()}\n";
      

      Expected: either throw an exception saying that A is attempting to reference an instance of B that is not persisted, or silently ignore the field.

      Actual: Cryptic notice:

      E_NOTICE (8): Undefined index: 0000000069d80795000000006ebfc57d (Doctrine/ORM/UnitOfWork.php:1903)

        Issue Links

          Activity

          Hide
          Guilherme Blanco added a comment -

          The issue you have is the same as if you use result cache. The entity is not managed by EM.
          Maybe an "Entity of class " . get_class($entity) . " not managed by EntityManager." exception is the best solution here.

          Cheers,

          Show
          Guilherme Blanco added a comment - The issue you have is the same as if you use result cache. The entity is not managed by EM. Maybe an "Entity of class " . get_class($entity) . " not managed by EntityManager." exception is the best solution here. Cheers,
          Hide
          Benjamin Eberlei added a comment -

          Given that the combination:

          $hash = spl_object_hash($object);
          return $this->somefoo[$hash];
          

          is probably one of the most called constructs in the complete code I tend to disagree with a check on each and everyone of them. However i to see the tendency towards errors of this kind as annoying, but maybe we can catch them earlier in those spots where they occour most often?

          Show
          Benjamin Eberlei added a comment - Given that the combination: $hash = spl_object_hash($object); return $ this ->somefoo[$hash]; is probably one of the most called constructs in the complete code I tend to disagree with a check on each and everyone of them. However i to see the tendency towards errors of this kind as annoying, but maybe we can catch them earlier in those spots where they occour most often?

            People

            • Assignee:
              Roman S. Borschel
              Reporter:
              Jaka Jancar
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: