缺少主键ID Doctrine Symfony2的值

Jer*_*emy 4 php mysql symfony doctrine-orm

我正在研究两个实体之间关于交响乐2.8.2的学说.我一直收到"缺少主键id的值"

下面是缺少id的id注释.

 /**
 * @ORM\Id
 * @ORM\Column(type="integer")
 * @ORM\GeneratedValue(strategy="AUTO")
 */
protected $id;
Run Code Online (Sandbox Code Playgroud)

这是我的加入:

/**
 * @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;
Run Code Online (Sandbox Code Playgroud)

cha*_*asr 5

joinColumn是你的协会名称的错误.

将映射更改为:

/**
 * @ORM\OneToOne(targetEntity="FYP\UserBundle\Entity\User", inversedBy="sessionDesign")
 * @ORM\JoinColumn(name="user_id", referencedColumnName="id")
 */
private $user;
Run Code Online (Sandbox Code Playgroud)

注意:这是默认配置,也可以删除该行,因为它没用.

编辑

没有指出真正的问题我是对的.
您收到此错误是因为您尝试使用不是主键的列作为referencedColumnName您的主键joinColumn

下列:

* @ORM\JoinColumn(name="id", referencedColumnName="fcid")
Run Code Online (Sandbox Code Playgroud)

应该:

* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
Run Code Online (Sandbox Code Playgroud)

这个类似的问题店主的回答(相关完全相同的错误):

无法使用指向非主键的连接列.Doctrine会认为这些是主键并使用数据创建延迟加载代理,这可能会导致意外结果.出于性能原因,Doctrine可以在运行时不验证此设置的正确性,而只能通过Validate Schema命令验证.

类似的问题是否可以为JoinColumn引用"id"以外的列?