SQL запрос для выбора категории

 
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1241
Привет всем.
Подскажите пожалуйста, где ошибка в запросе:
Код PHP:
  1. $model->join('con_'.$ctype_name, 'm', 'i.id = m.category_id'); // add
  2. $cats = $model->getCategoriesTree($ctype_name, $this->getOption('is_root'));
Файл \system\controllers\content\widgets\categories\widget.php строка 41
Пытаюсь получить только те категории, в которых есть запись.
Виджет Категории.
Редактировалось: 1 раз (Последний: 19 ноября 2015 в 13:07)
Дополнения для InstantCMS 2 | Готовый сайт Доска объявлений
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1164
а что собственно не получается или что в ошибке показывается?
Реклама
cms
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1241
С начало думал что всё работает, но потом заметил что не отображается несколько категории с записями.
Дополнения для InstantCMS 2 | Готовый сайт Доска объявлений
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 3767
Evanescence, пробуйте так:
Код PHP:
  1. $model->joinInner('con_'.$ctype_name, 'm', 'i.id = m.category_id');
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1241
Loadырь:
пробуйте так:
Думаю проблема в том что, система игнорирует категорию в котором нет записи, даже если в подкатегориях есть запись.
Какой будет запрос чтоб взять еще и родитель?
Дополнения для InstantCMS 2 | Готовый сайт Доска объявлений
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 3767
Может добавить ещё один джоин
Код PHP:
  1. $model->joinInner('con_'.$ctype_name, 'm', 'i.id = m.category_id');
  2. $model->join('con_'.$ctype_name.'_cats', 'n', 'n.id = m.parent_id');
Редактировалось: 1 раз (Последний: 19 ноября 2015 в 18:45)
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1241
Loadырь:
$model->join('con_'.$ctype_name.'_cats', 'n', 'n.id = m.parent_id');
Вернул пустой результат, но там и так выборка делается из таблицы категории...
Пробовал так, но не работает
Код PHP:
  1. $model->joinInner('con_'.$ctype_name, 'm', 'i.id = m.category_id OR i.parent_id = m.category_id');
Если с SQL не получается, может есть какой то способ для скрытые пустых категории?
с помощью jQuery?
или при выводе на шаблон с помощью php?
Дополнения для InstantCMS 2 | Готовый сайт Доска объявлений
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 3767
А мне ваш вариант вернул все категории, какие имеют записи, только у них проставлен шаблоне стиль display:none
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1241
Loadырь:
А мне ваш вариант вернул все категории
Наверно у меня не показывает из за того что некоторые записи в дополнительных категориях...
Буду дальше копать
Дополнения для InstantCMS 2 | Готовый сайт Доска объявлений
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 3767
Было
стало
Редактировалось: 1 раз (Последний: 19 ноября 2015 в 20:50)
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 3767
Evanescence:
Наверно у меня не показывает из за того что некоторые записи в дополнительных категориях
В файле templates\default\controllers\content\widgets\categories\categories.tpl.php строка 11 - замените последнюю цифру (1) на число превышающее уровень вложенности ваших категорий (например 100500) и он покажет все категории и их подкатегории
InstantCMS Team
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 4577
Loadырь:
пробуйте так:
По идее просто join и innerJoin это синонимы.
В смысле не в модели методы синонимы, а в sql JOIN = INNER JOIN

Вам нужно присоединять таблицу cms_con_ТИП_cats_bind
Код PHP:
  1. $model->joinInner('con_'.$ctype_name.'_cats_bind', 'b', 'i.id = b.category_id');
И добавить группировку
Код PHP:
  1. $model->groupBy('i.id');
Если я правильно понял конечно
Редактировалось: 1 раз (Последний: 19 ноября 2015 в 21:03)
Видео каталог для InstantCMS | Аудио каталог для InstantCMS | Мы Вконтакте | Предложение для спонсоров
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 3767
Fuze, и ваш вариант и вариант Evanescence,
Код PHP:
  1. $model->joinInner('con_'.$ctype_name, 'm', 'i.id = m.category_id OR i.parent_id = m.category_id');
работают одинаково у меня на локалке smile
Редактировалось: 1 раз (Последний: 19 ноября 2015 в 21:07)
InstantCMS Team
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 4577
Loadырь:
работают одинаково у меня на локалке
как вы считаете, зачем таблица con_ТИП_cats_bind ?
Прикрепите запись к более чем одной категории и будет работать не одинаково.
Редактировалось: 1 раз (Последний: 19 ноября 2015 в 21:19)
Видео каталог для InstantCMS | Аудио каталог для InstantCMS | Мы Вконтакте | Предложение для спонсоров
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 3767
Fuze:
Прикрепите запись к более чем одной категории
Действительно, про это я и не думал.
В начало страницы
Предыдущая темаСледующая тема Перейти на форум: