*/ class PersistentCollectionCriteriaTest extends \Doctrine\Tests\OrmFunctionalTestCase { protected function setUp() { $this->useModelSet('cms'); parent::setUp(); } public function tearDown() { if ($this->_em) { $this->_em->getConfiguration()->setEntityNamespaces(array()); } parent::tearDown(); } public function loadFixture() { $article = new CmsArticle(); $article->topic = 'Criteria is awesome'; $article->text = 'foo'; $this->_em->persist($article); $comment1 = new CmsComment(); $comment1->topic = 'I agree'; $comment1->text = 'bar'; $this->_em->persist($comment1); $article->addComment($comment1); $comment2 = new CmsComment(); $comment2->topic = 'I disagree'; $comment2->text = 'baz'; $this->_em->persist($comment2); $article->addComment($comment2); $this->_em->flush(); unset($article); unset($comment1); unset($comment2); $this->_em->clear(); } public function testCanCountWithoutLoadingPersistentCollection() { $this->loadFixture(); $repository = $this->_em->getRepository('Doctrine\Tests\Models\CMS\CmsArticle'); $article = $repository->findOneBy(array('topic' => 'Criteria is awesome')); $comments = $article->comments->matching(new Criteria()); $this->assertInstanceOf('Doctrine\ORM\LazyCriteriaCollection', $comments); $this->assertFalse($comments->isInitialized()); $this->assertCount(2, $comments); $this->assertFalse($comments->isInitialized()); // Make sure it works with constraints $comments = $article->comments->matching(new Criteria( Criteria::expr()->eq('text', 'bar') )); $this->assertInstanceOf('Doctrine\ORM\LazyCriteriaCollection', $comments); $this->assertFalse($comments->isInitialized()); $this->assertCount(1, $comments); $this->assertFalse($comments->isInitialized()); } }