【发布时间】:2015-06-24 09:20:36
【问题描述】:
我有 2 个实体链接在一起图片 注意(请参阅下面的课程详细信息)。当我尝试删除图片记录时,我从 Symfony 收到以下消息
执行 'DELETE FROM Picture WHERE id = 时发生异常 ?带参数 [118]:SQLSTATE[23000]:违反完整性约束: 1451 无法删除或更新父行:外键约束 失败(
symfony.note,约束FK_6F8F552A8671F084外键 (picture_id) 参考资料Picture(id))
我觉得很奇怪,因为如果note.author_id与当前用户相同,那么我可以毫无问题地删除图片(以及与图片关联的注释)。
这里是我班级照片的一些细节和注释:
Class Picture
{
/**
* @ORM\OneToMany(targetEntity="XXX\XXXBundle\Entity\Note", mappedBy="picture", cascade={"persist", "remove"})
* @ORM\JoinColumn(name="note_id", referencedColumnName="picture_id", onDelete="CASCADE")
**/
private $notes;
}
Class Note
{
/**
* @ORM\Id
* @ORM\ManyToOne(targetEntity="XXX\XXXBundle\Entity\Picture", inversedBy="notes")
**/
private $picture;
/**
* @ORM\Id
* @ORM\ManyToOne(targetEntity="Sdz\UserBundle\Entity\User", cascade={"persist"})
*/
private $user;
}
在这里我的控制器删除图片。仅供参考图片是我形式的集合。我将选项 allow_delete 设置为 true
foreach($pictures as $picture) // $pictures is the initial list of picture
{
if(false === $data_form->getPictures()->contains($picture))
{
$em->remove($picture);
}
}
【问题讨论】:
-
您能否添加代码以尝试删除这些实体?
-
好的,我刚刚将它添加到我的问题中(在底部)。真正强大的是它可以正常工作,除非当前用户未发布该注释...
标签: php symfony doctrine cascading-deletes