我正在研究 symphony 2.8.2 学说中两个实体之间的连接。我不断收到“主键 id 缺少值”的信息
这是缺失 id 的 id 注释。
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
这是我的加入:
/**
* @ORM\OneToOne(targetEntity="FYP\BaseDesignBundle\Entity\SessionDesign", inversedBy="user")
* @ORM\JoinColumn(name="fcid", referencedColumnName="id")
*/
private $sessionDesign;
/**
* @ORM\OneToOne(targetEntity="FYP\UserBundle\Entity\User", inversedBy="sessionDesign")
* @ORM\JoinColumn(name="id", referencedColumnName="fcid")
*/
private $user;
这是一个错误,来自joinColumn
您协会的名称。
将您的映射更改为:
/**
* @ORM\OneToOne(targetEntity="FYP\UserBundle\Entity\User", inversedBy="sessionDesign")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
*/
private $user;
注意:这是默认配置,也可以删除该行,因为它没有用。
EDIT
我是对的,但没有指出真正的问题。
您收到此错误是因为您尝试使用不是主键的列作为referencedColumnName
你的joinColumn
下列:
* @ORM\JoinColumn(name="id", referencedColumnName="fcid")
应该:
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
From 这个类似的问题 https://stackoverflow.com/questions/24059666/doctrine-2-mapping-referencing-unique-key at 业主的回答 https://stackoverflow.com/a/24364419/4363634(与完全相同的错误相关):
无法使用指向非主键的连接列。 Doctrine 会认为这些是主键,并使用数据创建延迟加载代理,这可能会导致意外结果。出于性能原因,Doctrine 无法在运行时验证此设置的正确性,而只能通过 Validate Schema 命令来验证。
类似问题是否可以为 JoinColumn 引用“id”以外的列? https://stackoverflow.com/questions/8919910/is-it-possible-to-reference-a-column-other-than-id-for-a-joincolumn
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)