Sto usando il modulo flag per consentire agli utenti di contrassegnare le loro domande come risolte, in modo simile a come funziona su questo sito. Pertanto, desidero consentire agli utenti di filtrare i post per mostrare solo domande irrisolte. Inoltre, alcuni post potrebbero non essere affatto domande. Pertanto, non possono avere un flag "risolto", ma NON dovrebbero apparire nei risultati quando filtrano solo per domande irrisolte. Pertanto, ho bisogno di unire la tabella dei nodi con altri due: flag_content
e field_data_field_question
(quest'ultima tabella è ciò che dice se un post è o meno una domanda).
Ecco il codice corrente che sto provando:
$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');
Tuttavia, ciò provoca il seguente errore:
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).
Non è questo il modo corretto di passare NULL
valori in una query?