Я хотел бы иметь возможность перечислить 10 самых популярных тегов (тем) моего сайта в правом меню в качестве элемента.
Однако я думал об этом сейчас 30 минут и, в отличие от того, чтобы закончитьс 1 заявлением, чтобы сделать это, я, кажется, в конечном итоге с 3 утверждениями, которые резко снизят производительность сайта.
У меня есть сайт с рассказами и тегами.Это отношения HABTM (Имеет-и-принадлежит-многим) между ними, использующие таблицу Stories_tags.У истории может быть несколько тегов, и тег может использоваться несколькими историями.
Цель состоит в том, чтобы перечислить $ tagname ($ storycountwiththattag), от самого большого количества историй в теге до 10-го самого высокого.Пока у меня есть это, но это не кажется слишком близким.
$tags = $this->Tag->find('all',array('fields'=>array('Tag.name')));
$tags_count = $this->Tag->Story->find('count',array('conditions'=>array('Story.tag'=>$tags)));
debug($tags_count);
Я пробовал много возможных запросов.Я мог бы сделать это с ограниченным поиском ('all') или с помощью:
- Получение всех идентификаторов всех тегов
- Выполнение 1 запроса-подсчета на тег ...
- Используйте эти результаты.
Но я выбрал Cakephp для создания лучших приложений, поэтому мне стало интересно, как вы, ребята, сделаете это!Сайт получает всего несколько сотен посетителей в день, поэтому производительность не является чрезвычайно важной, но мне следует стараться избегать чрезвычайно глупых запросов, даже если какое-то снижение производительности не имеет значения.