2017-07-04 67 views
3

我使用symfony 2.7作为CMF。[Symfony2]:实体的级联元素删除如何获得生命周期属性

我有2个实体用户和任务。任务有一个生命周期属性(createdBy,updatedBy)。

当我尝试删除用户,我有此错误:

SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails (XXXX . mission , CONSTRAINT FK_19653DBD16FE72E1 FOREIGN KEY (updated_by) REFERENCES fos_user_user (id))

这是在实体使命我的生命周期元素:

/** 
* @ORM\ManyToOne(targetEntity="Application\Sonata\UserBundle\Entity\User") 
* @ORM\JoinColumn(name="created_by", referencedColumnName="id" , onDelete="CASCADE") 
*/ 
private $createdBy; 

/** 
* @ORM\ManyToOne(targetEntity="Application\Sonata\UserBundle\Entity\User") 
* @ORM\JoinColumn(name="updated_by", referencedColumnName="id" , onDelete="CASCADE") 
*/ 
private $updatedBy; 

THX的帮助。

+0

你想在用户删除或删除时将其删除吗? –

+0

我想删除任务 –

回答

1

把它在用户侧的学说的关系,是这样的:

* @ORM\OneToMany(targetEntity="your\entity\mission", cascade={"delete"}) 

编辑:

如果您不能访问用户实体(不明白为什么你不能......),你可以做一些事情有点难看获得更多的使命连接到用户,删除然后将其删除该用户

+0

问题,我有这么多的实体与生命周期,我不能有这个注释在实体用户 –

+0

刚更新我的回答 –

0

在您的用户实体: @ORM\OneToMany(targetEntity="xx",mappedBy="mission_id",cascade={"persist"})

在你的任务实体中:

@ORM\ManyToOne(targetEntity="Application\Sonata\UserBundle\Entity\User") 
@ORM\JoinColumn(name="created_by", referencedColumnName="id" , 
onDelete="CASCADE") 
+0

我没有在用户实体内注释 –