首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用Symfony删除记录(OneToMany)

问无法使用Symfony删除记录(OneToMany)
EN

Stack Overflow用户
提问于 2015-06-24 09:20:36
回答 1查看 1.7K关注 0票数 0

我有两个实体链接在一起图片<-(OneToMany)->备注(见下面的类详细信息)。当我试图删除一个图片记录时,我从Symfony收到了以下消息

执行“从图片中删除id =?”时发生异常。使用params 118: SQLSTATE23000:完整性约束违反: 1451不能删除或更新父行:外键约束失败(symfony.note,constraint FK_6F8F552A8671F084 REFERENCES (picture_id)引用Picture (id))

我觉得很奇怪,因为如果note.author_id与当前用户相同,那么我可以删除图片(以及与图片相关的注释),而不存在任何问题。

这里有一些我的课堂图片和注意事项的细节:

代码语言:javascript
复制
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;
}
代码语言:javascript
复制
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

代码语言:javascript
复制
    foreach($pictures as $picture) // $pictures is the initial list of picture
    {  
      if(false === $data_form->getPictures()->contains($picture))
      {
          $em->remove($picture);
      }
    }
EN

回答 1

Stack Overflow用户

发布于 2015-06-24 10:41:41

数据库上有阻止级联删除的约束。我建议使用phpMyAdmin工具(mysql命令行用于检查约束):打开两个表结构选项卡,进入关系视图,在这里检查如何设置约束。

您可能在原则映射和数据库中设置了不同的约束,并且它可能工作得很好,直到您尝试对数据库执行一个与数据库约束相冲突的操作,如这里所示。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31022615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档