引用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