Trebuie să cuibăresc câteva „grupuri unde” într-o interogare QueryPluginBase, dar pot cuibăra doar primul grup de adâncime în „unde” principal folosind setWhereGroup. Trebuie să adaug grupuri în alte grupuri, dar nu există o funcție care să o facă, deoarece setWhereGroup vă permite să adăugați un nou grup SAU/ȘI, dar nu pot seta ID-ul grupului părinte pe care aș dori să îl cuib. De exemplu, as avea nevoie de:
((Condiția 1 SAU Condiția 2) ȘI ( (Condiția 3 SAU Condiția 4) ȘI (Condiția 5 SAU Condiția 6) )) SAU (Condiția 7)
Acesta este pluginul meu personalizat de filtru de vizualizări:
spațiu de nume Drupal\modulul_meu\Plugin\views\filter;
utilizați Drupal\views\Plugin\views\filter\FilterPluginBase;
utilizați Drupal\views\Plugin\views\display\DisplayPluginBase;
utilizați Drupal\views\ViewExecutable;
/**
* Filtrul meu personalizat
*
* @ingroup views_filter_handlers
*
* @ViewsFilter("my_custom_filter")
*/
clasa MyCustomFilter extinde FilterPluginBase {
/**
* {@inheritdoc}
*/
funcția publică init(ViewExecutable $view, DisplayPluginBase $display, array &$options = NULL) {
parent::init($view, $display, $opțiuni);
$this->valueTitle = t('Filtre agende utilizator');
}
interogare de funcție publică () {
$this->query->setWhereGroup('OR', '90');
$user_org = $user->field_usr_org;
foreach ($user_org ca $org) {
$this->query->addWhere('90', 'mytable.myfieldid', $org->target_id, '=');
}
$this->query->setWhereGroup('OR', '91');
....
}
}