我想创建一个共享同一个连接表的多对多关系。我试过如下:Symfony2多对多的关系共享一个JoinTable
[Doctrine\DBAL\Schema\SchemaException]
The table with name 'postgres.user_groups' already exists.
如何创建一个多一对多的关系,共享相同的:
<?php
/** @Entity **/
class User
{
// ...
/**
* @ManyToMany(targetEntity="Group", inversedBy="users")
* @JoinTable(name="users_groups")
**/
private $groups;
// ...
}
/** @Entity **/
class Group
{
// ...
/**
* @ManyToMany(targetEntity="User", mappedBy="groups")
* @JoinTable(name="users_groups")
**/
private $users;
// ...
}
这,但是,当我尝试更新表返回以下错误表'user_groups'?
注意:我知道我可以删除@JoinTable(name="users_groups")
,但是当我这样做时,我不再拥有与两个拥有方之间的多对多关系。相反,只有一方(拥有方)知道连接表。
谢谢你你的答案。这通过创建一个拥有的一面和一个反面的方式起作用,但是,我希望能够创建两个拥有的一面。上面的注释让我可以做到这一点,但是当我更新SQL时,它会尝试两次创建连接表,这会引发上述错误。 该文档讨论了创建一个拥有两个拥有方的多对多但它没有详细介绍。 – Marcel
@MarcelTjandraatmadja将有一个拥有和一个反面这两个实体不能拥有一方也从文档*原则只会检查协会的拥有方的变化*见第四点[*协会更新:拥有方和逆Side *](http://doctrine-orm.readthedocs.org/en/latest/reference/unitofwork-associations.html#association-updates-owning-side-and-inverse-side) –
我明白了。那么如何在更新时自动更新连接表?即当一个组被添加到一个用户或当一个用户被添加到一个组。 – Marcel