我有一个显示实体的表单:
class Event
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
*
* @ORM\OneToMany(targetEntity="EventAttendee", mappedBy="event", cascade={"all"})
*/
private $attendees;
}
及其中的一个集合:
class EventAttendee
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
*
* @ORM\ManyToOne(targetEntity="Event", inversedBy="attendees")
* @ORM\JoinColumn(name="event_id", referencedColumnName="id", onDelete="CASCADE")
*/
private $event;
/**
*
* @ORM\OneToOne(targetEntity="Employee")
* @ORM\JoinColumn(name="employee_id", referencedColumnName="id", onDelete="CASCADE")
*/
private $employee;
}
如果我从集合中删除了一个员工并再次添加,我就会违反完整性约束。这是因为Doctrine的UnitOfWork首先执行Inserts然后删除。因此,当它插入新记录时,db仍然具有同一雇员的旧记录。
Doctrine2开发人员没有为Symfony2用户提供任何有用的解决方案(这里是主题:http://www.doctrine-project.org/jira/browse/DDC-601)。
因此,我在这里问这个问题:无论如何可以避免这个问题吗?
编辑:
我目前的解决方法是:
这对我有用,但看起来不太好。也许某人有更好的解决方案。