117 lines
2.7 KiB
PHP
117 lines
2.7 KiB
PHP
<?php
|
|
|
|
namespace Doctrine\Tests\ORM\Functional\Ticket;
|
|
|
|
require_once __DIR__ . '/../../../TestInit.php';
|
|
|
|
class DDC211Test extends \Doctrine\Tests\OrmFunctionalTestCase
|
|
{
|
|
protected function setUp()
|
|
{
|
|
parent::setUp();
|
|
$this->_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; }
|
|
}
|
|
|