Doctrine 条令2一对一级联集空 错误

Doctrine 条令2一对一级联集空 错误,doctrine,null,set,one-to-many,Doctrine,Null,Set,One To Many,无法删除或更新父行:外键约束失败 班级 我想要 我想要的是,当您删除一个教师时,id\u教师被修改为NULL。我想保留这份出版物,但不向教授透露 我不知道在教义中是怎么做到的,有可能吗?还是必须始终与教师建立关系?您应该在实体出版物的注释中添加选项onDelete=“SET NULL”,如下所示: 类发布 { /** *@ORM\manytone(targetEntity=“Teacher”,inversedBy=“publications”) *@ORM\JoinColumn(name=“te

无法删除或更新父行:外键约束失败

班级 我想要 我想要的是,当您删除一个教师时,id\u教师被修改为NULL。我想保留这份出版物,但不向教授透露


我不知道在教义中是怎么做到的,有可能吗?还是必须始终与教师建立关系?

您应该在实体出版物的注释中添加选项
onDelete=“SET NULL”
,如下所示:

类发布
{
/**
*@ORM\manytone(targetEntity=“Teacher”,inversedBy=“publications”)
*@ORM\JoinColumn(name=“teacher\u id”,referencedColumnName=“id”,onDelete=“SET NULL”)
*/
受保护的教师;
}

干杯

请注意,添加此选项后必须更新数据库架构。*@ORM\JoinColumn(onDelete=“SET NULL”)足够此解决方案直接作用于数据库,而不是原则,这很好,但如果使用类似的机制,请小心。如果您的实体正在被软删除,它将不会触发SET_NULL,并且您的子实体将指向“已删除”对象。您需要添加一个条令侦听器使其工作(取决于您想要的行为)。
class Teacher {

    /**
     *@ORM\OneToMany(targetEntity="publication", mappedBy="teacher")
     */
    protected $publications;
}

class Publication {

    /**
     * @ORM\ManyToOne(targetEntity="Teacher", inversedBy="publications")
     * @ORM\JoinColumn(name="teacher_id", referencedColumnName="id")
     */
    protected $teacher;
}