3 namespace Doctrine\Tests\ORM\Functional;
5 use Doctrine\Common\Persistence\PersistentObject;
9 class PersistentCollectionTest extends \Doctrine\Tests\OrmFunctionalTestCase
11 protected function setUp()
15 $this->_schemaTool->createSchema(array(
16 $this->_em->getClassMetadata(__NAMESPACE__ . '\PersistentCollectionHolder'),
17 $this->_em->getClassMetadata(__NAMESPACE__ . '\PersistentCollectionContent'),
19 } catch (\Exception $e) {
22 PersistentObject::setObjectManager($this->_em);
25 public function testPersist()
27 $collectionHolder = new PersistentCollectionHolder();
28 $content = new PersistentCollectionContent('first element');
29 $collectionHolder->addElement($content);
31 $this->_em->persist($collectionHolder);
35 $collectionHolder = $this->_em->find(__NAMESPACE__ . '\PersistentCollectionHolder', $collectionHolder->getId());
36 $collectionHolder->getCollection();
38 $content = new PersistentCollectionContent('second element');
39 $collectionHolder->addElement($content);
41 $this->assertEquals(2, $collectionHolder->getCollection()->count());
49 class PersistentCollectionHolder extends PersistentObject
52 * @Id @Column(type="integer") @GeneratedValue
58 * @var \Doctrine\Common\Collections\Collection
59 * @ManyToMany(targetEntity="PersistentCollectionContent", cascade={"all"})
61 protected $collection;
63 public function __construct()
65 $this->collection = new \Doctrine\Common\Collections\ArrayCollection();
69 * @param PersistentCollectionContent $element
71 public function addElement(PersistentCollectionContent $element)
73 $this->collection->add($element);
77 * @return \Doctrine\Common\Collections\Collection
79 public function getCollection()
81 return clone $this->collection;
89 class PersistentCollectionContent extends PersistentObject
93 * @Id @Column(type="integer") @GeneratedValue