我开始与Doctrine ORM库一起玩,我也学习了表之间的所有关联。学说 - OneToOne单向与OneToOne双向
所以我坚持单向和双向关系的差异。
当我得到它时,单向关系仅在一侧具有主键,而这一侧是拥有一侧的权利? 而双向关系在这两个表中都有主键,因此你可以在双方都有关系,并且在双方都设置约束。
现在,我读通过Doctrine有关文件的文件,你有: Unidirectional和Bidirectional协会。
但它们会产生相同的SQL,以及具有相同主键和约束的相同表。所以我没有看到这两者有什么不同。而且这两个例子都有主键。
当我得到它时,真正的双向关系应该在两个表中都有主键指向另一个表的权利?并且在Doctrine文档上给出的例子并非如此。两个例子都给出了相同的结果,并且是相同的。
所以我做了什么,是这样,可以说我有用户和卡实体,并希望关系是OneToOne双向。
/**
* @Entity
* @Table(name="users")
*/
class User
{
/**
* @Id
* @GeneratedValue
* @Column(type="bigint")
*/
protected $id;
/**
* @OneToOne(targetEntity="Card", mappedBy="User")
* @JoinColumn(name="card_id", referencedColumnName="id")
*/
protected $card;
/**
* @Column(name="user_name", type="string")
*/
protected $userName;
/**
* @Column(name="user_pass", type="string")
*/
protected $userPass;
}
/**
* @Entity
* @Table(name="cards")
*/
class Card
{
/**
* @Id
* @GeneratedValue
* @Column(type="bigint")
*/
protected $id;
/**
* @OneToOne(targetEntity="User", inversedBy="Card")
* @JoinColumn(name="user_id", referencedColumnName="id")
*/
protected $user;
/**
* @Column(name="post_title", type="string")
*/
protected $cardType;
}
这里的区别在于我在两个对象/实体中写了@JoinColumn。在学说的例子中只有一个。 现在我会得到我认为是双向关系。如果我看EER图,我可以看到一行从用户指向卡,另一行从卡到用户。
基本上我得到这个权利? 原则文件是否错误? :D Bidirectional OneToOne关系如何在EER图中查看?
谢谢!
有人吗?没有人? :d – otporan