Skip to content

Loading…

DDC-455: E_NOTICE Undefined index when setting field to a property that is not persisted #4957

Closed
doctrinebot opened this Issue · 4 comments

1 participant

@doctrinebot

Jira issue originally created by user jakajancar:

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)

@doctrinebot

Comment created by @guilhermeblanco:

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,

@doctrinebot

Comment created by @beberlei:

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?

@doctrinebot

Issue was closed with resolution "Fixed"

@doctrinebot doctrinebot added this to the 2.0-BETA3 milestone
@doctrinebot doctrinebot closed this
@doctrinebot doctrinebot added the Bug label
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.