Как вывести количество записей по "id" ?

InstantCMS 2.X
#1 29 сентября 2017 в 15:25
Друзья уже создавал тему на сайте но мне так и не ответили, уже неделю пытаюсь сделать но никак не получается не знаю как это сделать.

Есть страница www.site/sport
Там я вывожу виды спорта из базы.

  1. public function getEvents(){
  2. return $this->get('sport');
  3. }

  1. <?php foreach($events as $event) { ?>
  2. <tr>
  3. <td class="field ft_caption f_title">
  4. <h2> <a href="<?php echo $this->href_to('teams', $event['id']); ?>" class="title"><?php html($event['tournament_name']); ?></h2>
  5. </td>
  6. <td class="field ft_caption f_title"> Число сколько туринров</td>
  7. </tr>
  8. <?php } ?>


Есть страница www.site/sport/teams/1

База cms_sport_tournaments

Там я вывожу по id турниры которым относятся к спорту. Если id 1 значит это Баскетбол если 2 Футбол и тд.


Вопрос состоит в том что мне нужно на страницу www.site/sport вывести количество турниров для каждого вида спорта.

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

  1. public function getSportsTouranmentsCount(){
  2. $this->filterEqual('sport', 1);
  3.  
  4. return $this->getCount('sport_tournaments');
  5. }
#2 29 сентября 2017 в 15:42

но мне так и не ответили

Нико
Поэтому я создал новую facepalmне мытьём, так катанием.

никак не получается не знаю как это сделать

Нико
Потому что нужно учиться разбираться, вникать, а не просто копипастить ответы, которые вам дают.

  1. public function getSportsTouranmentsCount($events){
  2. $this->filterEqual('sport', 1);
  3. // получили количество по фильтру
  4. // getCount не сбрасывает фильтр после работы
  5. // и все наложенные фильтры после выполнения применяются к следующим запросам
  6. $count = $this->getCount('sport_tournaments');
  7. // сбрасываем фильтры принудительно
  8. // если данные метод предполагает просто получение кол-ва
  9. // и наложенные фильтры далее не должны применяться
  10. $this->resetFilters();
  11. return $count;
  12. }
я очень надеюсь, что вы сейчас по прошествии стольки созданных вами вопросов поняли, почему ваше платное "дополнение" никогда не проходило модерацию и не пройдёт.
#3 29 сентября 2017 в 15:47

Друзья уже создавал тему на сайте но мне так и не ответили, уже неделю пытаюсь сделать но никак не получается не знаю как это сделать.

Нико

На самом деле все довольно просто.

Сначала описание задачи:

Есть две таблицы — первая с уникальными id (виды спорта), вторая с турнирами и колонкой, указывающей на вид спорта.
Нужен запрос, который вернет две колонки (вид спорта и количество турниров по нему)
Баскетбол, 3
Футбол, 8
Настольный теннис, 2

Я покажу примерный запрос, а сами колонки уже правьте как надо…

sql запрос
  1. select i.tournament_name, count(st.id)
  2. from cms_sport i
  3. inner join cms_sport_tournaments st on st.sport = i.id
  4. group by i.tournament_name
Или для Инстанта —

  1.  
  2. $this->selectOnly('tournament_name')
  3. ->select('count(st.id)', 'tournaments')
  4. ->groupBy('tournament_name')
  5. ->joinInner('sport_tournaments', 'st', 'st.sport = i.id')
  6. ->get('sport');
  7.  
В результате должен получится массив с двумя колонками (tournament_name и tournaments).

Код не проверяю, возможны ошибки.
#4 29 сентября 2017 в 15:47


Друзья уже создавал тему на сайте но мне так и не ответили, уже неделю пытаюсь сделать но никак не получается не знаю как это сделать.

Есть страница www.site/sport
Там я вывожу виды спорта из базы.

  1. public function getEvents(){
  2. return $this->get('sport');
  3. }

  1.  
  2.  
  3.  
  4.  
  5.  

Нико

Спасибо, но я не собираюсь его загружать, если только кому то если пригодится. Дело в том что я делаю не простой компонент, а спортивный и пытаюсь учесть все виды спорта, а не один. Так бы давно сделал для одного вида спорта, а теперь можно будет любой вид спорт создавать и организовать турниры или чемпионаты и спасибо все кто мне помогает потому что я не чисто супер программист, стараюсь как то -что то сделать как самоучка.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.