原则2OneTomany 级联 SETNULL

错误

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

课程

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;
}

我想

我想要的是,当您删除一个教师时,id _ acher 被修改为 NULL。我想保留这份出版物,但不提及教授。

我不知道怎么做,在原则,这是可能的吗?还是只能跟老师谈恋爱?

54454 次浏览

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

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

此修改在表声明本身中注册。因此,需要进行数据库迁移或模式更改才能生效。

干杯!

Symfony 6(PHP 8)

#[ORM\JoinColumn(nullable: true, onDelete: 'SET NULL')]