Symfony一对一单向关系
我有两个实体。用户和联系人。用户和联系人具有相同的属性电话号码。如果用户对象存在,我想获取其所有联系人。也可能联系人表中存在相同的电话号码,但用户表中不存在 以下是联系人实体中的注释:Symfony一对一单向关系,symfony,doctrine-orm,Symfony,Doctrine Orm,我有两个实体。用户和联系人。用户和联系人具有相同的属性电话号码。如果用户对象存在,我想获取其所有联系人。也可能联系人表中存在相同的电话号码,但用户表中不存在 以下是联系人实体中的注释: /** * @ORM\OneToOne(targetEntity="Dlabs\ServiceBundle\Entity\User", mappedBy="contact") * @ORM\JoinColumn(name="phone", referencedColumnName="phone_number"
/**
* @ORM\OneToOne(targetEntity="Dlabs\ServiceBundle\Entity\User", mappedBy="contact")
* @ORM\JoinColumn(name="phone", referencedColumnName="phone_number", nullable=true)
*/
private $user;
当我更新架构时,会出现以下错误:
[Doctrine\DBAL\DBALException]执行时发生异常
'更改表联系人添加约束FK_83DFA4444F97DD外键
(电话)参考用户(电话号码)最初不可延迟
立即”:SQLSTATE[23503]:外键冲突:7错误:insert
或表“contact”上的更新违反外键约束
“fk_83DFA4444F97DD”详细信息:键(电话)=(+38640775xxx)未被激活
在“用户”表中显示
[PDOException]SQLSTATE[23503]:外键冲突:7错误:
表“contact”上的插入或更新违反外键约束
“fk_83DFA4444F97DD”详细信息:键(电话)=(+38640775xxx)未被激活
在“用户”表中显示
有人知道我应该以何种方式更改注释以使其生效吗?谢谢 您无法对注释进行任何更改,以使其与现有关系一起工作 您已在联系人和用户实体之间定义了可为空的一对一关系。从类的角度来看,这意味着联系人的$user必须指向user的实例或为null。从相应的表透视图来看,这意味着contact.phone必须与user.phone_号码匹配或为空 虽然在PHP中,松散类型表示联系人的$user在理论上可能是用户对象或字符串电话号码,但这不能用原则映射表示 两种可能的替代方案是: