diff --git a/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC211Test.php b/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC211Test.php new file mode 100644 index 000000000..6aa2dc6b7 --- /dev/null +++ b/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC211Test.php @@ -0,0 +1,116 @@ +_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") + * @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; } +} +