Мне нужно вложить некоторые группы «где» в запрос 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');
....
}
}