2011-01-31 15 views
1

だからDoctrineモデルへの "taggable"拡張を実装するfzTagプラグインを使用します。 $ blogentry-> getTags()は一つだけタグを返します。symfony:fzTag-Pugin、Doctrine:テンプレート内のタグを取得

<?php foreach ($blogentry->getTags() as $tag): ?> 
    <a href="<?php echo url_for('blog_tags',$tag) ?>"><?php echo $tag->getName() ?></a> 
<?php endforeach; ?> 

しかし、テンプレートに:

 $this->pager = new sfDoctrinePager('BlogEntry',5); 
     $this->pager->setQuery(Doctrine::getTable('BlogEntry')->createQuery('a')->leftJoin('a.Tags t')->where('t.id = ?',$this->tag->getId())); 
     $this->pager->setPage($request->getParameter('page', 1)); 
     $this->pager->init(); 

と私のテンプレートでは、私が使用:私のアクションで

私は何かのように持っていますか?どのように私はこれを変更できますか?

答えて

1

BlogEntriesを取得するには、それでもすべてのタグを読み取るには、通常サブクエリを使用しますが、これは適切なエントリを示します。それはあなたのBlogEntryTableクラスでそれを維持するのがベストです、もちろん

$query->where($query->getRootAlias().'.id IN (
        SELECT b1.id FROM BlogEntry b1 LEFT JOIN b1.Tags t1 
        WHERE t1.id = ?)', $this->tag->getId()); 

だから、あなたのクエリは、通常BlogEntryリストのように、用意した後、あなたはちょうどこの場所の条件を追加します。

+0

ありがとうございます! – worenga