[英]Doctrine 2 OneToOne from PFK of another OneToOne association
我有一個問題。 我正在使用Doctrine 2.0 ,我想知道是否有可能通過使用另一個OneToOne關聯創建的PFK建立OneToOne關聯,如下圖所示。
我的代碼如下所示:
用戶類別:
/**
* @ORM\Entity()
*/
class User extends \Kdyby\Doctrine\Entities\IdentifiedEntity
{
/**
* @ORM\OneToOne(targetEntity="AllianceMember", mappedBy="user")
* var AllianceMember
*/
protected $allianceMembership;
}
AllianceMember類:
/**
* @ORM\Entity()
*/
class AllianceMember extends \Kdyby\Doctrine\Entities\BaseEntity
{
/**
* @ORM\Id
* @ORM\OneToOne(targetEntity="User", inversedBy="allianceMembership")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id", nullable=false)
* @var User
*/
protected $user;
/**
* @ORM\OneToOne(targetEntity="AllianceRole", mappedBy="allianceMember")
* var AllianceRole
*/
protected $role;
AllianceRole類別:
/**
*
* @ORM\Entity()
*/
class AllianceRole extends \Kdyby\Doctrine\Entities\BaseEntity
{
/**
* @ORM\Id
* @ORM\OneToOne(targetEntity="AllianceMember", inversedBy="role")
* @ORM\JoinColumn(name="role_id", referencedColumnName="user_id", nullable=false)
* @var AllianceMember
*/
protected $allianceMember;
}
當我嘗試獲取用戶實體的實例時,出現此錯誤:
The column user_id must be mapped to a field in class App\Entity\AllianceMember since it is referenced by a join column of another class.
可能嗎?
謝謝。
是的,自從教義2.1看到與教義2同時看到主鍵和外鍵之后,就可以對@Id
使用映射的實體
我認為您只需要刪除一些JoinColumn
語句即可。 由於@user
已經被指定為您的@Id
,因此不必將user_id
指定為JoinColumn:
/**
* @ORM\Entity()
*/
class AllianceMember extends \Kdyby\Doctrine\Entities\BaseEntity
{
/**
* @ORM\Id
* @ORM\OneToOne(targetEntity="User", inversedBy="allianceMembership")
* @var User
*/
protected $user;
/**
* @ORM\OneToOne(targetEntity="AllianceRole", mappedBy="allianceMember")
* var AllianceRole
*/
protected $role;
和
/**
*
* @ORM\Entity()
*/
class AllianceRole extends \Kdyby\Doctrine\Entities\BaseEntity
{
/**
* @ORM\Id
* @ORM\OneToOne(targetEntity="AllianceMember", inversedBy="role")
* @var AllianceMember
*/
protected $allianceMember;
}
AllianceMember的ID為user_id,AllianceRole的ID為AllianceMember的ID,即user_id。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.