проблема при написании запроса dql - PullRequest
1 голос
/ 29 января 2011

Я использую плагин для добавления тегов к содержимому моей базы данных, и у меня возникают некоторые трудности при написании следующего запроса:

Я хочу, чтобы список тегов был помечен как минимумодин опубликованный контент, поэтому я попытался:

$this->tagsNumber = Doctrine_Core::getTable('Tag')
->createQuery('t')
->select('t.name, count(tg.tag_id) as nbr')
->innerJoin('t.Tagging tg')
->innerJoin('Content c on c.id = tg.taggable_id')
->where('c.state = ?', 3)
->orderBy('nbr DESC, t.name')
->groupBy('tg.tag_id')
->execute();

Но связь между тегами и контентом в плагине не указана, поэтому Doctrine выдает исключение «неизвестный псевдоним отношения».

РЕДАКТИРОВАТЬ

Я пытался использовать функции в PluginTagTable.class.php :

$q = Doctrine_Query::create()
  ->select('tg.tag_id, t.name, COUNT(tg.id) AS t_count')
  ->from('Tagging tg, tg.Tag t, Content c on tg.model_id = c.id')
  ->where('c.state_id = ?', 3);

$this->etiquettesOrdre = PluginTagTable::getAllTagNameWithCount($q,Array('model' => 'Content', 'sort_by_popularity' => true));

Но все равно отображаются все теги и странные числа в видеколичество.

Ответы [ 2 ]

0 голосов
/ 07 февраля 2011

Понял!Я думал о загрузке плагина Apostrophe и поиске getAllTagNameWithCount вызовов

    $q = Doctrine_Query::create()->from('Tagging tg, tg.Tag t, Content
c');
    $q->andWhere('c.id = tg.taggable_id and c.state_id = ?', 3);

    $this->tagsInOrder =
PluginTagTable::getAllTagNameWithCount($q,Array('model' => 'Content',
'sort_by_popularity' => true)); 
0 голосов
/ 31 января 2011

Я думаю, что это хорошая практика:

  1. Создать связь между ними
  2. Реализовать CountCache Поведение

Так что в этом случае вы можете легко работать с подпрограммами тегирования.

...