引用doctrine reference - one to many unidirectional需要幫助理解學說一對多
class User
{
// ...
/**
* @ManyToMany(targetEntity="Phonenumber")
* @JoinTable(name="users_phonenumbers",
* joinColumns={@JoinColumn(name="user_id", referencedColumnName="id")},
* inverseJoinColumns={@JoinColumn(name="phonenumber_id", referencedColumnName="id", unique=true)}
* )
*/
private $phonenumbers;
// ...
}
的一部分,我不明白的是unique=true
。它有什麼作用?我看事情是這樣的......
- 用戶有很多與Phonenumber來許多關係
- 它使用的連接表
users_phonenumbers
users_phonenumbers.user_id = users.id
users_phonenumbers.phonenumber_id = Phonenumber.id
- 我猜
unique
做某種程度上限制了多對多到多對一的關係。但你如何解釋它?同樣在SQL意義上(輸出是什麼樣的)?
hmm等待,從SQL,不會''phonenumber'唯一的表'User_phonenumber'表?從sql中,我解釋爲,1個用戶可以有多個phonenumbers,但1個phonenumber可以爲1個用戶,因爲它唯一的**表** **不** **數據庫**? – 2010-07-19 07:40:47
是正確的,這是一對多的意思。一個用戶有很多電話號碼,許多電話號碼有一個用戶。 無論如何,只能有一個phonenumber,因爲ID是一個主鍵,它總是唯一的。 但是,您仍然可以將唯一的phonenumber連接到許多用戶,除非phonenumber_id在多對多JoinTable中也是唯一的。 – beberlei 2010-07-19 12:50:13