Я використовую модуль прапора, щоб дозволити користувачам позначати свої питання як вирішені, як це працює на цьому веб-сайті. Тому я хочу дозволити користувачам фільтрувати публікації, щоб показувати лише невирішені питання. Крім того, деякі пости можуть взагалі не бути питаннями. Отже, вони не можуть мати "розв'язаний" прапор, але вони також НЕ повинні відображатися в результатах під час фільтрації лише за невирішеними питаннями. Тому мені потрібно з'єднати таблицю вузлів з двома іншими: flag_content
і field_data_field_question
(ця остання таблиця - це те, що говорить про те, чи є публікація питанням чи ні).
Ось поточний код, який я намагаюся:
$query->join('flag_content', 'f', 'f.content_id = n.nid AND f.content_type = "node" AND f.fid = 5');
$query->join('field_data_field_question', 'q', 'q.entity_id = n.nid AND q.field_question_value = 1');
$query->condition('f.fid', 'NULL', 'IS');
$query->condition('q.field_question_value', 'NULL', 'IS NOT');
Однак це призводить до наступної помилки:
PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''NULL') AND (q.field_question_value IS NOT 'NULL')
LIMIT 21 OFFSET 0' at line 4: SELECT n.nid AS nid
FROM
{node} n
INNER JOIN {field_data_field_category} t ON t.entity_id = n.nid
INNER JOIN {flag_content} f ON f.content_id = n.nid AND f.content_type = "node" AND f.fid = 5
INNER JOIN {field_data_field_question} q ON q.entity_id = n.nid AND q.field_question_value = 1
WHERE (t.field_category_tid = :db_condition_placeholder_0) AND (f.fid IS :db_condition_placeholder_1) AND (q.field_question_value IS NOT :db_condition_placeholder_2)
LIMIT 21 OFFSET 0; Array
( [:db_condition_placeholder_0] => 464 [:db_condition_placeholder_1] => NULL [:db_condition_placeholder_2] => NULL
)
in queryExecuteRender_recentActivity() (line 57 of someFile.php).
Це не правильний спосіб передачі NULL
значень у запит?