নির্দিষ্ট উদাহরণে আপনার শর্তটি সহজভাবে এইভাবে লেখা উচিত:
$query->condition('n.language', 'ab', '<>');
জেনেরিক ক্ষেত্রে, যেখানে আপনাকে সাব-কোয়েরি থেকে ফিরে আসা মানগুলির ভিত্তিতে ডাটাবেসে সারি নির্বাচন করতে হবে, নিম্নলিখিত বিষয়গুলি আপনাকে বিবেচনা করা উচিত:
"নট ইন" অপারেটর হিসাবে গৃহীত হয় SelectQuery::condition()
। আসলে, নিম্নলিখিত কোয়েরি কার্যকর করা হবে:
$query = db_select('node', 'n')->fields('n');
$query->condition('n.nid', array(1, 2, 3), 'NOT IN');
$nodes = $query->execute();
foreach ($nodes as $node) {
dsm($node->nid);
}
হিসাবে রিপোর্ট শর্তসাপেক্ষ ক্লজ ( "Subselects"), SelectQuery::condition()
এছাড়াও একটি বস্তু বাস্তবায়নে গ্রহণ SelectQueryInterface
জন্য মান হিসাবে $value
যেমন দ্বারা ফিরে এক হিসাবে, db_select()
; সমস্যাটি হ'ল আসলে মানটি $operator
সমান হলে আপনি এটি ব্যবহার করতে পারেন "IN"
। দেখুন Subselects যখন জন্য মান হিসেবে ব্যবহার ছাড়া DBTNG অবস্থায় কাজ করে না, ।
আমি সাব-কোয়েরিতে "নট ইন" অপারেটরটি দেখতে কেবলমাত্র উপায়টি condition
হ'ল:
- একটি অ্যারে পেতে subquery চালানো
নিম্নলিখিত স্নিপেটের মতো শর্তটি নির্ধারণ করে মূল জিজ্ঞাসাটি কার্যকর করুন
$query->condition($key, $subquery_result, 'NOT IN');
$subquery_result
সাব-কোয়েরির ফলাফল সহ অ্যারে is
অন্যথায়, আপনি where()
অন্যরা যেমন বলেছিলেন তেমন ব্যবহার করতে পারেন , যা আপনার যুক্ত হওয়া ক্যোয়ারির অংশটির জন্য একটি স্ট্রিং গ্রহণ করে।
মনে রাখবেন যে db_select()
ধীর হয় যে db_query()
; আপনার প্রথমটি ব্যবহার করা উচিত যখন আপনি জানেন যে ক্যোয়ারীটি অন্য মডিউল দ্বারা পরিবর্তন করা যেতে পারে। অন্যথায়, যদি অন্য মডিউলগুলি hook_query_alter()
আপনার ক্যোয়ারী পরিবর্তন করতে না পারে তবে আপনার ব্যবহার করা উচিত db_query()
।
নোডগুলি অ্যাক্সেস করার ক্ষেত্রে, যদি আপনার কেবলমাত্র নোডগুলি পেতে প্রয়োজন যেখানে কোনও ব্যবহারকারীর অ্যাক্সেস রয়েছে, তবে আপনাকে কোয়েরির ট্যাগ হিসাবে ব্যবহার করতে হবে db_select()
এবং যুক্ত করতে হবে । উদাহরণস্বরূপ, নিম্নলিখিত কোড ব্যবহার করে।'node_access'
SelectQuery::addTag()
blog_page_last()
$query = db_select('node', 'n')->extend('PagerDefault');
$nids = $query
->fields('n', array('nid', 'sticky', 'created'))
->condition('type', 'blog')
->condition('status', 1)
->orderBy('sticky', 'DESC')
->orderBy('created', 'DESC')
->limit(variable_get('default_nodes_main', 10))
->addTag('node_access')
->execute()
->fetchCol();
অনুরূপ কোড ব্যবহার করে book_block_view()
।
$select = db_select('node', 'n')
->fields('n', array('title'))
->condition('n.nid', $node->book['bid'])
->addTag('node_access');
$title = $select->execute()->fetchField();
SELECT nid FROM node WHERE language != 'ab'
?