Replacing object in a OneToOne with OrphanRemoval=true isn't working as
expected
So a have a class defined like this:
class PhoneSettings {
[...]
/**
* @OneToOne(targetEntity="Medium", cascade={"persist", "remove"},
orphanRemoval=true)
* @JoinColumn(name="medium_id", referencedColumnName="medium_id",
nullable=true, onDelete="SET NULL")
**/
protected $medium = null;
[...]
}
And class Medium has no reference to the class Settings.
Now suppose I have a $Settings object that is already persisted and has
been correctly loaded. Also suppose that the $Settings object has a
$medium (that is, $Settings->medium = $OldMedium)
$Settings->medium = $NewMedium;
Where $NewMedium is a different Medium object.
When I persist $Settings, Doctrine does delete $OldMedium from the DB, but
the problem is that it also deletes $NewMedium ...
What am I doing wrong?
I have tried removing onDelete="SET NULL", but then I receive a "cannot
delete, constraint failed" error...
No comments:
Post a Comment