Рейтинг:0

Как я могу использовать подключаемый модуль обработчика соединений с группами и несколькими условиями?

флаг lb

Я пытаюсь создать собственный фильтр просмотра, и в методе запроса мне нужно создать это соединение.

LEFT JOIN список node__field_list ON node_field_data.nid = list.entity_id
И list.deleted = 0
И (list.langcode = node_field_data.langcode ИЛИ list.bundle IN ('option_1','option_2'))

Использование документации для ViewsJoinHandler, мне удалось создать объединение, но я не смог воссоздать условные операторы в свойстве «extra», как предлагалось в документации.

$ таблица = 'node_field_data';
$related_content = ['option_1','option_2'];
$extra = "cc.deleted = 0 И (cc.langcode = node_field_data.langcode ИЛИ cc.bundle IN ('" . implode("','", $related_content) . "'))";
$join_definition = [
  'таблица' => 'node__field_list',
  'поле' => 'entity_id',
  'left_table' => $таблица,
  'left_field' => 'нид',
  'оператор' => '=',
  'дополнительно' => $дополнительно,
];

$join = Views::pluginManager('join')->createInstance('standard', $join_definition);
$this->query->addRelationship('cc', $join, $table);

Можно ли добавить к «дополнительным» условиям исходный запрос, как показано в документации, соблюдая скобки и условие ИЛИ?

$ таблица = 'node_field_data';
$related_content = ['option_1','option_2'];
$join_definition = [
  'таблица' => 'node__field_list',
  'поле' => 'entity_id',
  'left_table' => $таблица,
  'left_field' => 'нид',
  'оператор' => '=',
  'дополнительно' => [
    [
      'поле' => 'удалено',
      'значение' => 0,
    ],
    [
      'поле' => 'код языка',
      'left_field' => 'код языка',
    ],
    [
      'поле' => 'комплект',
      'значение' => $related_content,
      'оператор' => 'В',
    ],
  ],
];

Последнее соединение добавляет только условия И для каждого элемента в «дополнительном» массиве, но я не знаю, как добавить ИЛИ между двумя условиями или скобками, чтобы сгруппировать некоторые из них.

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

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