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

Php 无法使用Symfony删除记录(OneToMany),php,symfony,doctrine,cascading-deletes,Php,Symfony,Doctrine,Cascading Deletes,我有两个实体链接在一起的图片说明(见下面的类详细信息)。当我试图删除图片记录时,我从Symfony收到以下消息 执行“从id为的图片中删除”时发生异常= 带参数[118]:SQLSTATE[23000]:完整性约束冲突: 1451无法删除或更新父行:外键约束 失败(symfony注意,约束FK_6F8F552A8671F084外键 (picture\u id)参考资料picture(id) 我觉得很奇怪,因为如果note.author\u id与当前用户相同,那么我可以毫无问题地删除图片(以及与

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

执行“从id为的图片中删除”时发生异常= 带参数[118]:SQLSTATE[23000]:完整性约束冲突: 1451无法删除或更新父行:外键约束 失败(
symfony
注意
,约束
FK_6F8F552A8671F084
外键 (
picture\u id
)参考资料
picture
id

我觉得很奇怪,因为如果note.author\u id与当前用户相同,那么我可以毫无问题地删除图片(以及与图片相关的注释)。

下面是我的课堂照片和笔记的一些细节:

类图片
{
/**
*@ORM\OneToMany(targetEntity=“XXX\XXXBundle\Entity\Note”,mappedBy=“picture”,cascade={“persist”,“remove”})
*@ORM\JoinColumn(name=“note\u id”,referencedColumnName=“picture\u id”,onDelete=“CASCADE”)
**/
私人美元钞票;
}
课堂笔记
{
/**
*@ORM\Id
*@ORM\manytone(targetEntity=“XXX\XXXBundle\Entity\Picture”,inversedBy=“notes”)
**/
私人$picture;
/**
*@ORM\Id
*@ORM\ManyToOne(targetEntity=“Sdz\UserBundle\Entity\User”,cascade={“persist”})
*/
私人用户;
}
这里是我的控制器删除图片。仅供参考图片是我表格中的一个集合。我将选项allow_delete设置为true


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


您可能在条令映射和数据库中设置了不同的约束,在您尝试对数据库执行与数据库约束冲突的操作之前,它可能会正常工作,如下图所示。

您可以添加代码以了解如何尝试删除这些实体吗?好的,我刚刚将其添加到我的问题中(在底部)。真正的优势在于,除非注释不是由当前用户发布的,否则它可以正常工作…好的,FIsher,在我使用phpMyAdmin工具之前,当注释作者是当前用户时,什么样的约束使数据库可以正常工作以删除图片。。。当便笺作者不是当前用户时不起作用?这取决于删除图片时希望发生什么。如果您想删除相关的注释,请进行约束级联。是的,我想删除与图片相关的注释。这就是为什么我在课堂图片的评论中设置onDelete=“CASCADE”。(除非与图片相关联的注释具有与当前用户不同的author\u id,这很奇怪),否则它工作正常)如果note.author.id=当前用户id,则我没有触发的symfony异常。然后我不知道。问题似乎更深。实际上,错误消息直截了当地说:约束允许删除,我将从数据库中删除所有约束,然后重试。好的,我如何从数据库中删除约束?顺便说一句,我没有关系视图按钮(即使将存储引擎设置为“innoDB”)
    foreach($pictures as $picture) // $pictures is the initial list of picture
    {  
      if(false === $data_form->getPictures()->contains($picture))
      {
          $em->remove($picture);
      }
    }