इसे प्राप्त करने के कुछ तरीके हैं, पहला यह होगा कि परिणामों को समूहीकृत किया जाए और HAVING
. का उपयोग किया जाए विशिष्ट टैगों की संख्या की तुलना करने के लिए
$query = $this->Users
->find()
->matching('Tags', function ($query) {
return $query->where(['Tags.name IN' => ['Tag1', 'Tag2']]);
})
->group('Users.id')
->having([
$this->Users->query()->newExpr('COUNT(DISTINCT Tags.name) = 2')
]);
यह केवल उन उपयोगकर्ताओं का चयन करेगा जिनके पास दो अलग-अलग टैग हैं, जो केवल Tag1
. हो सकते हैं और Tag2
चूंकि ये केवल वही हैं जिन्हें शामिल किया जा रहा है। मामले में name
कॉलम अद्वितीय है, आप इसके बजाय प्राथमिक कुंजी पर भरोसा कर सकते हैं।
IN
बीटीडब्ल्यू। अनिवार्य रूप से आपके OR
. जैसा ही है शर्तें (डेटाबेस सिस्टम IN
expand का विस्तार करेगा करने के लिए OR
शर्तों के अनुसार)।