我開始與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