Поиск элементов ИС по нескольким тегам

#
Поиск элементов ИС по нескольким тегам
Добрый день.
Есть форма с тремя выпадающими списками. В качестве значений списков используются метки из группы1, группы2 и группы3.
Как можно реализовать поиск информационных систем по нескольким тегам, которые пользователь выбрал в форме?

Informationsystem_Controller_Show->tag() - принимает только одно значение?

iva
Модератор
#
Re: Поиск элементов ИС по нескольким тегам
ivetta04,
только по одному, но вы можете снаружи контроллеру добавить условия нескольких тегов:

$Informationsystem_Controller_Show->informationsystemItems()
               ->queryBuilder()
               ->leftJoin('tag_informationsystem_items', 'informationsystem_items.id', '=', 'tag_informationsystem_items.informationsystem_item_id')
               ->where('tag_informationsystem_items.tag_id', 'IN', array(11,12,13,17));
#
Re: Поиск элементов ИС по нескольким тегам
Я правильно понимаю, если я хочу делать выборку по наличию всех трех тегов у элемента (оператор and),  код будет выглядеть так:

$Informationsystem_Controller_Show->informationsystemItems()
               ->queryBuilder()
               ->leftJoin('tag_informationsystem_items', 'informationsystem_items.id', '=', 'tag_informationsystem_items.informationsystem_item_id')
               ->where('tag_informationsystem_items.tag_id', '=', 11)
  ->where('tag_informationsystem_items.tag_id', '=', 12)
  ->where('tag_informationsystem_items.tag_id', '=', 13);

У меня все равно выдает результат по совпадению одного и тегов а не всех трех.
iva
Модератор
#
Re: Поиск элементов ИС по нескольким тегам
ivetta04,
я же вам дал правильный ответ, зачем вы его меняете на неправильный и удивляетесь, что код не работает?
#
Re: Поиск элементов ИС по нескольким тегам
Это была попытка модифицировать код, под мои нужды.
Согласна, затупила

Но если долго мучиться.....
В итоге по аналогии с доп.свойствами смогла добиться нужного мне результата.
Может кому пригодиться

$Informationsystem_Controller_Show->informationsystemItems()
               ->queryBuilder()
               ->leftJoin('tag_informationsystem_items', 'tag_informationsystem_items.informationsystem_item_id','=', 'informationsystem_items.id' )
                     ->leftJoin('tags', 'tags.id','=', 'tag_informationsystem_items.tag_id')
      ->where('tag_informationsystem_items.tag_id', 'IN', array(124,125))
         ->groupBy('tag_informationsystem_items.informationsystem_item_id')
        ->having(Core_Querybuilder::expression('COUNT(DISTINCT `tags`.`id`)'), '=', 2);
   
iva
#
Re: Поиск элементов ИС по нескольким тегам
Как сделать чтобы поиск происходил по всей ИС(по всем группам и подгруппам), а не конкретно в группе в которой я нахожусь?
$search_text = trim(strval(Core_Array::getGet('text')));
if (!is_null(Core_Array::getGet('text')))
{
   $Informationsystem_Controller_Show
      ->informationsystemGroups()
   ->queryBuilder()
      ->where('name', 'LIKE',  $search_text . '%');
}

Массив подгрупп я нахожу
$informationsystem_group_id = htmlspecialchars($oInformationsystem_Group->id);
$informationsystem_id = 26;
$aChildrenGroups = getChildrenGroups($informationsystem_id, $informationsystem_group_id);
foreach ($aChildrenGroups as $oInformationsystem_Group)
{
   $aJSON[] = $oInformationsystem_Group->name;
   $aJSON1[] = $oInformationsystem_Group->id;
}

Либо как вывести именно подгруппы, а не их элементы?
group(FALSE);
- выводит как раз элементы(
Модер, выручай.
Модератор
#
Re: Поиск элементов ИС по нескольким тегам
activ214365,
какое отношение ваш вопрос имеет к обсуждаемому в данной теме показа инфоэлементов по нескольким идентификаторам тегов?
Авторизация