2011-01-31 1 views
1

Итак, im Использование плагина fzTag, который реализует расширение «taggable» для моделей Doctrine.symfony: fzTag-Pugin, Doctrine: retrieve Теги в шаблоне

В Моем действии у меня есть что-то вроде:

 $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(); 

и в моем шаблоне я использую:

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

Но в шаблоне $ blogentry-> getTags() возвращает только один тег? Как я могу это изменить?

ответ

1

Чтобы извлечь BlogEntries, но все же прочитать все его теги, я обычно использую подзапрос, который указывает мне на соответствующие записи.

Итак, после того, как подготовлен ваш запрос, как для обычного списка BlogEntry, вы просто добавить это условие, где:

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

Конечно, это лучше держать его в BlogEntryTable классе.

+0

большое вам спасибо! – worenga