{ $finder->with('DCategory')->find(); $t->pass('Relations lookup work also on finder children objects'); } catch (Exception $e) { $t->fail('Relations lookup work also on finder children objects'); } $t->diag('sfDoctrineFinder::with() and left joins'); Doctrine_Query::create()->delete()->from('DComment')->execute(); Doctrine_Query::create()->delete()->from('DArticle')->execute(); Doctrine_Query::create()->delete()->from('DCategory')->execute(); $category1 = new DCategory(); $category1->setName('cat1'); $category1->save(); $article1 = new DArticle(); $article1->setTitle('aaa'); $article1->setCategory($category1); $article1->save(); $article2 = new DArticle(); $article2->setTitle('bbb'); $article2->save(); $article = sfDoctrineFinder::from('DArticle')->leftJoin('DCategory')->with('DCategory')->findLast(); $category = $article->getCategory(); if (is_object($category)) { $t->isa_ok($article->getCategory(), 'Doctrine_Null', 'In a left join using with(), empty related objects are not hydrated');
$article2->save(); $finder = sfDoctrineFinder::from('DArticle'); $nbArticles1 = $finder->where('Title', 'aaaaa')->count(); $nbArticles2 = $finder->count(); $t->isnt($nbArticles1, $nbArticles2, 'By default, the query is reinitialized after a termination method'); $finder = sfDoctrineFinder::from('DArticle')->keepQuery(); $nbArticles1 = $finder->where('Title', 'aaaaa')->count(); $nbArticles2 = $finder->count(); $t->is($nbArticles1, $nbArticles2, 'Using keepQuery() keeps the query between two termination methods'); $t->diag('relatedTo()'); Doctrine_Query::create()->delete()->from('DArticle')->execute(); Doctrine_Query::create()->delete()->from('DCategory')->execute(); $category1 = new DCategory(); $category1->setName('cat1'); $category1->save(); $category2 = new DCategory(); $category2->setName('cat2'); $category2->save(); $article1 = new DArticle(); $article1->setTitle('aaaaa'); $article1->setCategory($category1); $article1->save(); $article2 = new DArticle(); $article2->setTitle('bbbbb'); $article2->setCategory($category1); $article2->save(); $article3 = new DArticle(); $article3->setTitle('ccccc'); $article3->setCategory($category2); $article3->save(); $articles = sfDoctrineFinder::from('DArticle')->relatedTo($category1)->find();