1
0
mirror of synced 2024-12-14 15:16:04 +03:00
doctrine2/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC742Test.php

133 lines
3.4 KiB
PHP

<?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') && @fsockopen('localhost', 11211)) {
$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());
} else {
$this->markTestSkipped('Test only works with a cache enabled.');
}
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;
}