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; }