[Symfony2]: 一个实体的级联元素删除 如何拥有生命周期属性
[Symfony2]: Cascading element deletion of an entity How to have a life cycle attribute
我正在使用 symfony 2.7 作为 CMF。
我有 2 个实体 user 和 Mission 。任务具有生命周期属性(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;
感谢帮助。
将它放在用户端的学说关系中,例如:
* @ORM\OneToMany(targetEntity="your\entity\mission", cascade={"delete"})
编辑:
如果你不能访问用户实体(不明白为什么你不能......)你可以做一些有点丑陋的事情,比如将任务附加到用户,删除它然后删除用户
在您的用户实体中:
@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")
我正在使用 symfony 2.7 作为 CMF。
我有 2 个实体 user 和 Mission 。任务具有生命周期属性(createdBy,updatedBy)。
当我尝试删除用户时出现此错误:
SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails (
XXXX
.mission
, CONSTRAINTFK_19653DBD16FE72E1
FOREIGN KEY (updated_by
) REFERENCESfos_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;
感谢帮助。
将它放在用户端的学说关系中,例如:
* @ORM\OneToMany(targetEntity="your\entity\mission", cascade={"delete"})
编辑:
如果你不能访问用户实体(不明白为什么你不能......)你可以做一些有点丑陋的事情,比如将任务附加到用户,删除它然后删除用户
在您的用户实体中:
@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")