我有两个实体链接在一起图片<-(OneToMany)->备注(见下面的类详细信息)。当我试图删除一个图片记录时,我从Symfony收到了以下消息
执行“从图片中删除id =?”时发生异常。使用params 118: SQLSTATE23000:完整性约束违反: 1451不能删除或更新父行:外键约束失败(
symfony.note,constraintFK_6F8F552A8671F084REFERENCES (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;
}在这里我的控制器要删除图片。FYI图片是以我的形式收藏的。我将选项allow_delete设置为true
foreach($pictures as $picture) // $pictures is the initial list of picture
{
if(false === $data_form->getPictures()->contains($picture))
{
$em->remove($picture);
}
}发布于 2015-06-24 10:41:41
数据库上有阻止级联删除的约束。我建议使用phpMyAdmin工具(mysql命令行用于检查约束):打开两个表结构选项卡,进入关系视图,在这里检查如何设置约束。
您可能在原则映射和数据库中设置了不同的约束,并且它可能工作得很好,直到您尝试对数据库执行一个与数据库约束相冲突的操作,如这里所示。
https://stackoverflow.com/questions/31022615
复制相似问题