123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- <?php
- namespace Doctrine\Tests\ORM\Functional\Ticket;
- use Doctrine\Common\Collections\ArrayCollection;
- require_once __DIR__ . '/../../../TestInit.php';
- class DDC742Test extends \Doctrine\Tests\OrmFunctionalTestCase
- {
- private $userCm;
- private $commentCm;
- protected function setUp()
- {
- parent::setUp();
- if (\extension_loaded('memcache')) {
- $memcache = new \Memcache();
- $memcache->addServer('localhost');
- $memcache->flush();
- $cacheDriver = new \Doctrine\Common\Cache\MemcacheCache();
- $cacheDriver->setMemcache($memcache);
- $this->_em->getMetadataFactory()->setCacheDriver($cacheDriver);
- } else if (\extension_loaded('apc')) {
- $this->_em->getMetadataFactory()->setCacheDriver(new \Doctrine\Common\Cache\ApcCache());
- }
- try {
- $this->_schemaTool->createSchema(array(
- $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC742User'),
- $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC742Comment')
- ));
- } catch(\Exception $e) {
- }
- // make sure classes will be deserialized from caches
- $this->_em->getMetadataFactory()->setMetadataFor(__NAMESPACE__ . '\DDC742User', null);
- $this->_em->getMetadataFactory()->setMetadataFor(__NAMESPACE__ . '\DDC742Comment', null);
- }
- public function testIssue()
- {
- $user = new DDC742User();
- $user->title = "Foo";
- $user->favoriteComments = new ArrayCollection();
- $comment1 = new DDC742Comment();
- $comment1->content = "foo";
- $comment2 = new DDC742Comment();
- $comment2->content = "bar";
- $comment3 = new DDC742Comment();
- $comment3->content = "baz";
- $user->favoriteComments->add($comment1);
- $user->favoriteComments->add($comment2);
- $this->_em->persist($user);
- $this->_em->persist($comment1);
- $this->_em->persist($comment2);
- $this->_em->persist($comment3);
- $this->_em->flush();
- $this->_em->clear();
- $user = $this->_em->find(get_class($user), $user->id);
- $comment3 = $this->_em->find(get_class($comment3), $comment3->id);
- $user->favoriteComments->add($comment3);
- $this->_em->flush();
- }
- }
- /**
- * @Entity
- * @Table(name="users")
- */
- class DDC742User
- {
- /**
- * User Id
- *
- * @Id
- * @GeneratedValue(strategy="AUTO")
- * @Column(type="integer")
- * @var integer
- */
- public $id;
- /**
- * @Column(length=100, type="string")
- * @var string
- */
- public $title;
- /**
- * @ManyToMany(targetEntity="DDC742Comment", cascade={"persist"}, fetch="EAGER")
- * @JoinTable(
- * name="user_comments",
- * joinColumns={@JoinColumn(name="user_id",referencedColumnName="id")},
- * inverseJoinColumns={@JoinColumn(name="comment_id", referencedColumnName="id")}
- * )
- *
- * @var Doctrine\ORM\PersistentCollection
- */
- public $favoriteComments;
- }
- /**
- * @Entity
- * @Table(name="comments")
- */
- class DDC742Comment
- {
- /**
- * User Id
- *
- * @Id
- * @GeneratedValue(strategy="AUTO")
- * @Column(type="integer")
- * @var integer
- */
- public $id;
- /**
- * @Column(length=100, type="string")
- * @var string
- */
- public $content;
- }
|