_schemaTool->createSchema(array( $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC211User'), $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC211Group') )); } public function testIssue() { //$this->_em->getConnection()->getConfiguration()->setSQLLogger(new \Doctrine\DBAL\Logging\EchoSQLLogger); $user = new DDC211User; $user->setName('John Doe'); $this->_em->persist($user); $this->_em->flush(); $groupNames = array('group 1', 'group 2', 'group 3', 'group 4'); foreach ($groupNames as $name) { $group = new DDC211Group; $group->setName($name); $this->_em->persist($group); $this->_em->flush(); if (!$user->getGroups()->contains($group)) { $user->getGroups()->add($group); $group->getUsers()->add($user); $this->_em->flush(); } } $this->assertEquals(4, $user->getGroups()->count()); } } /** * @Entity * @Table(name="ddc211_users") */ class DDC211User { /** * @Id * @Column(name="id", type="integer") * @GeneratedValue(strategy="AUTO") */ protected $id; /** * @Column(name="name", type="string") */ protected $name; /** * @ManyToMany(targetEntity="DDC211Group", inversedBy="users") * @JoinTable(name="user_groups", * joinColumns={@JoinColumn(name="user_id", referencedColumnName="id")}, * inverseJoinColumns={@JoinColumn(name="group_id", referencedColumnName="id")} * ) */ protected $groups; public function __construct() { $this->groups = new \Doctrine\Common\Collections\ArrayCollection(); } public function setName($name) { $this->name = $name; } public function getGroups() { return $this->groups; } } /** * @Entity * @Table(name="ddc211_groups") */ class DDC211Group { /** * @Id * @Column(name="id", type="integer") * @GeneratedValue(strategy="AUTO") */ protected $id; /** * @Column(name="name", type="string") */ protected $name; /** * @ManyToMany(targetEntity="DDC211User", mappedBy="groups") */ protected $users; public function __construct() { $this->users = new \Doctrine\Common\Collections\ArrayCollection(); } public function setName($name) { $this->name = $name; } public function getUsers() { return $this->users; } }