যোগদান এবং NULL মান খুঁজছেন


19

আমি এই সাইটে এটি কীভাবে কাজ করে তার অনুরূপ ব্যবহারকারীদের তাদের প্রশ্নগুলি সমাধান হিসাবে চিহ্নিত করার জন্য পতাকা মডিউলটি ব্যবহার করছি। তাই আমি ব্যবহারকারীদের কেবলমাত্র অমীমাংসিত প্রশ্নগুলি দেখানোর জন্য পোস্টগুলি ফিল্টার করতে দিতে চাই। তদ্ব্যতীত, কিছু পোস্টে মোটেই প্রশ্ন নাও হতে পারে। অতএব, তাদের একটি "সমাধান করা" পতাকা থাকতে পারে না, তবে কেবলমাত্র অমীমাংসিত প্রশ্ন দ্বারা ফিল্টার করার সময় তাদের ফলাফলগুলিতে উপস্থিত হওয়া উচিত নয়। অতএব, আমাকে আরও দু'জনের সাথে নোড টেবিলের সাথে যোগ দিতে হবে: 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মানগুলি পাস করার সঠিক উপায় নয় ?

উত্তর:


31

ডাটাবেস এপিআই এর প্রকৃতপক্ষে এই ধরণের এক্সপ্রেশন যুক্ত করার জন্য একটি পছন্দসই উপায় রয়েছে, নাম SelectQuery::isNull()এবং SelectQuery::isNotNull()ফাংশন। আপনি তাদের এগুলি ব্যবহার করতে পারেন:

$query->isNull('f.fid');

$query->isNotNull('q.field_question_value');
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.