Zend framework 如何在一对一原则中将引用的密钥id更新为null

Zend framework 如何在一对一原则中将引用的密钥id更新为null,zend-framework,doctrine-orm,doctrine,cascade,one-to-one,Zend Framework,Doctrine Orm,Doctrine,Cascade,One To One,我正在处理这个问题。每当我删除一个公司实体时,将公司id作为参考键的联系人实体就会抛出一个错误 找不到ID为(29)的公司 我有这个: Contacts Table ID, Name, Company_ID Companies Table ID, Name 我在它们的实体中有这些关系 Contact.php /** * @ORM\OneToOne(targetEntity="Company", cascade={"persist"}) * @ORM\JoinColumn(name="Co

我正在处理这个问题。每当我删除一个公司实体时,将公司id作为参考键的联系人实体就会抛出一个错误

找不到ID为(29)的公司

我有这个:

Contacts Table
ID, Name, Company_ID

Companies Table
ID, Name
我在它们的实体中有这些关系

Contact.php
/**
 * @ORM\OneToOne(targetEntity="Company", cascade={"persist"})
 * @ORM\JoinColumn(name="Company_ID", referencedColumnName="ID")
 */
private $company;

Company.php
/**
 * @ORM\OneToMany(targetEntity="Contact", mappedBy="company")
 * @ORM\JoinColumn(name="ID", referencedColumnName="Company_ID")
 */
private $contacts;

我对教义还不太熟悉。但是,当我删除ID为
1
的公司时,所有公司ID为1的联系人都应为空。这是信条可以处理的吗?或者我必须为它编写手动代码。

orphanRemoving=true
添加到关系中(注意!阅读!),并将
cascade
设置为
“持久”、“删除”
。请记住,这是基于这样的假设,即
联系人
公司
拥有,不能单独存在。(如果一个
联系人
可以独立,您可能需要将关系更改为具有连接表的单向多个联系人)是的,联系人可以独立。很多人都不适合。联系人只能有一个公司。在这种情况下,您需要一个OneToMany单向,即注释中有可连接的多个公司,请参阅:向关系添加
orphanRemoving=true
(注意!阅读!),并将
cascade
设置为
“persist”,“remove”
。请记住,这是基于这样的假设,即
联系人
公司
拥有,不能单独存在。(如果一个
联系人
可以独立,您可能需要将关系更改为具有连接表的单向多个联系人)是的,联系人可以独立。很多人都不适合。联系人只能有一个公司。在这种情况下,您需要一个OneToMany单向,即注释中具有JoinTable的多个公司,请参见: