Tôi cần lồng một số "nhóm vị trí" trên truy vấn QueryPluginBase, nhưng tôi chỉ có thể lồng nhóm độ sâu đầu tiên vào "vị trí" chính bằng cách sử dụng setWhereGroup. Tôi cần thêm các nhóm vào một nhóm khác nhưng không có chức năng để làm điều đó vì setWhereGroup cho phép bạn thêm một nhóm OR/AND mới nhưng tôi không thể đặt ID nhóm mẹ mà tôi muốn lồng vào. Ví dụ: tôi cần:
((Điều kiện 1 HOẶC Điều kiện 2) AND ( (Điều kiện 3 HOẶC Điều kiện 4) AND (Điều kiện 5 HOẶC Điều kiện 6) )) OR (Điều kiện 7)
Đây là plugin bộ lọc chế độ xem tùy chỉnh của tôi:
không gian tên Drupal\my_module\Plugin\views\filter;
sử dụng Drupal\views\Plugin\views\filter\FilterPluginBase;
sử dụng Drupal\views\Plugin\views\display\DisplayPluginBase;
sử dụng Drupal\views\ViewExecutable;
/**
* Bộ lọc tùy chỉnh của tôi
*
* @ingroup lượt xem_filter_handlers
*
* @ViewsFilter("my_custom_filter")
*/
lớp MyCustomFilter mở rộng FilterPluginBase {
/**
* {@inheritdoc}
*/
hàm công khai init(ViewExecutable $view, DisplayPluginBase $display, array &$options = NULL) {
cha mẹ::init($view, $display, $options);
$this->valueTitle = t('Lọc chương trình nghị sự sử dụng');
}
truy vấn hàm công khai() {
$this->query->setWhereGroup('OR', '90');
$user_org = $user->field_usr_org;
foreach ($user_org as $org) {
$this->query->addWhere('90', 'mytable.myfieldid', $org->target_id, '=');
}
$this->query->setWhereGroup('OR', '91');
....
}
}