指的是不存在的反面字段。 Doctrine2

时间:2016-02-23 19:01:31

标签: php symfony doctrine-orm doctrine

我正在研究doctrine2 / symphony 2.8.2中的OneToOne加入,我一直在努力:

The association X\BaseDesignBundle\Entity\SessionDesign#user refers to the inverse side field X\UserBundle\Entity\User#SessionDesign which does not exist.

用户:

/**
 * @ORM\OneToOne(targetEntity="X\BaseDesignBundle\Entity\SessionDesign")
 * @ORM\JoinColumn(name="fcid", referencedColumnName="id")
 */
private $sessionDesign;

会话设计:

/**
* @ORM\OneToOne(targetEntity="x\UserBundle\Entity\User")
* @ORM\JoinColumn(name="id", referencedColumnName="fcid")
*/
private $user;

我有0个想法在这一点上是错的,我已经尝试了我能想到的一切。谢谢你提供的所有帮助。

2 个答案:

答案 0 :(得分:0)

JoinColumn只应出现在FK所在的实体上。

例如(假设FK在会话设计上。)

会话设计

/**
 * @ORM\OneToOne(targetEntity="X\BaseDesignBundle\Entity\User")
 * @ORM\JoinColumn(name="fcid", referencedColumnName="id")
 */
private $user;

用户:

/**
* @ORM\OneToOne(targetEntity="x\UserBundle\Entity\SessionDesign", inversedBy="user")
*/
private $sessionDesign;

为了您自己的理智,我建议您更好地命名您的FK。 fcid并不是一目了然,为什么不把它称为user_id或session_design_id(取决于你把FK放在哪里)。

E.g。 * @ORM\JoinColumn(name="session_design_id", referencedColumnName="id")

只是简化了解析

有关详细信息,请参阅documentation

答案 1 :(得分:0)

我会补充上一个答案: @ORM \ OneToOne(targetEntity =" X \ BaseDesignBundle \ Entity \ User", mappedBy =" sessionDesign"