Рейтинг:-2

Оператор ИЛИ в фильтрах просмотра не применяется

флаг br

Я создал представление контента, в котором есть группа фильтров с использованием оператора AND, которая объединяется с другой группой фильтров с помощью оператора OR (см. изображение ниже).

введите описание изображения здесь

Однако построенный запрос состоит из всех операторов И, а группы даже не применяются. Вот предложение WHERE запроса:

КУДА 
(
  (
    // Содержимое: Тип (= По требованию)
    node__field_format.field_format_target_id = '29'
  )
) 
И 
(
  (
    (
      // Содержание: Опубликовано (= Да)
      "node_field_data"."статус" = '1'
    )
    И 
    (
      // Контент: тип контента (в Event, Training)
      "node_field_data"."type" IN ("event", "training_session")
    )
  ) 
  И
  (
    (
      // (field_date_and_location: Paragraph) Paragraph: Диапазон дат (>= + 0 минут)
      DATE_FORMAT((paragraphs_item_field_data_node__field_date_and_location__paragraph__field_date_range.field_date_range_value + INTERVAL -21600 SECOND), '%Y-%m-%d\T%H:%i:%s') >= DATE_FORMAT(('2021-10-19T18:53:48' + INTERVAL -21600 SECOND), '%Y-%m-%d\T%H:%i:%s')
    )
  )
)

Этот запрос даже отдаленно не близок к тому, что я настроил как... По моим конфигурациям я ожидал бы, что предложение WHERE будет

КУДА 
(
  (
    // Содержание: Опубликовано (= Да)
    "node_field_data"."статус" = '1'
  )
  И 
  (
    // Контент: тип контента (в Event, Training)
    "node_field_data"."type" IN ("event", "training_session")
  )
) 
И 
(
  (
    // Содержимое: Тип (= По требованию)
    node__field_format.field_format_target_id = '29'
  ) 
  ИЛИ ЖЕ
  (
    // (field_date_and_location: Paragraph) Paragraph: Диапазон дат (>= + 0 минут)
    DATE_FORMAT((paragraphs_item_field_data_node__field_date_and_location__paragraph__field_date_range.field_date_range_value + INTERVAL -21600 SECOND), '%Y-%m-%d\T%H:%i:%s') >= DATE_FORMAT(('2021-10-19T18:53:48' + INTERVAL -21600 SECOND), '%Y-%m-%d\T%H:%i:%s')
  )
)

В чем проблема с моими конфигурациями? Я чувствую, что это должно быть довольно простой реализацией, но степень неправильности запроса кажется неверной.

Рейтинг:0
флаг br

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

Кроме того, у нас есть открытый фильтр, который позволяет пользователю фильтровать по этому типу термина таксономии. Следовательно, на одном поле есть два отдельных фильтра, один открыт, другой нет.

В первой группе условий существует открытое условие фильтра, называемое Имеет термин таксономии который смотрит на Тема таксономический термин.

Во второй группе условий существует невыставленное условие фильтра, называемое Тип содержимого который также смотрит на Тема таксономический термин.

Однако, когда Drupal создает это предложение where. это ставит Тип контента == По запросу условие в группу условий, где существует аналогичный открытый фильтр.

Вы ДОЛЖНЫ исправить это в hook_views_query_alter. Я сообщил об этом как об ошибке на Drupal.org

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

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