Birleşimler ve NULL değerler aranıyor


19

Kullanıcıların sorularını bu sitede nasıl çalıştığına benzer şekilde çözülmüş olarak işaretlemelerini sağlamak için bayrak modülünü kullanıyorum. Bu nedenle kullanıcıların yalnızca çözülmemiş soruları göstermek için yayınları filtrelemesine izin vermek istiyorum. Ayrıca, bazı yayınlar hiç soru olmayabilir. Bu nedenle, "çözülmüş" bir bayrağa sahip olamazlar, ancak sonuçlarda yalnızca çözülmemiş sorularla filtreleme yaparken görünmemelidirler. Bu nedenle, düğüm tablosuna diğer iki kişi ile katılmam gerekiyor: flag_contentve field_data_field_question(bu ikinci tablo, bir gönderinin bir soru olup olmadığını söyleyen şeydir).

İşte şu an çalıştığım kod:

$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');

Ancak, bu aşağıdaki hatayla sonuçlanır:

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).

NULLDeğerleri sorguya aktarmanın doğru yolu bu değil mi?

Yanıtlar:


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.