Рейтинг:0

Вложенные группы условий в плагине фильтра представлений

флаг ni

Мне нужно вложить некоторые группы «где» в запрос QueryPluginBase, но я могу вложить только первую группу глубины в основное «где», используя setWhereGroup. Мне нужно добавить группы в другие группы, но для этого нет функции, потому что setWhereGroup позволяет добавить новую группу ИЛИ/И, но я не могу установить идентификатор родительской группы, который я хотел бы вложить. Например, мне нужно:

((Условие1 ИЛИ Условие2) И ((Условие3 ИЛИ Условие4) И (Условие5 ИЛИ Условие6)) ИЛИ (Условие7)

Это мой настраиваемый плагин фильтра представлений:

пространство имен Drupal\my_module\Plugin\views\filter;

используйте Drupal\views\Plugin\views\filter\FilterPluginBase;
используйте Drupal\views\Plugin\views\display\DisplayPluginBase;
используйте Drupal\views\ViewExecutable;

/**
 * Мой пользовательский фильтр
 *
 * @ingroup views_filter_handlers
 *
 * @ViewsFilter("мой_пользовательский_фильтр") 
 */
класс MyCustomFilter расширяет FilterPluginBase {

    /**
     * {@inheritdoc}
     */
    публичная функция init(ViewExecutable $view, DisplayPluginBase $display, array &$options = NULL) {
        parent::init($view, $display, $options);
        $this->valueTitle = t('Повестка дня фильтра');
    }

    запрос публичной функции () {
      $this->query->setWhereGroup('ИЛИ', '90');
      $user_org = $user->field_usr_org;
      
      foreach ($user_org как $org) {
         $this->query->addWhere('90', 'mytable.myfieldid', $org->target_id, '=');
      }

      $this->query->setWhereGroup('ИЛИ', '91');
      ....
    }
}  

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.