प्रोपेल में मानक नहीं है मापदंड के हिस्से के रूप में सबक्वेरी करने का तरीका।
आप या तो अपनी क्वेरी को अलग कर सकते हैं (वह मान प्राप्त करें जिसकी आप पहले तुलना करना चाहते हैं और फिर इसे मूल क्वेरी में उपयोग करें) या CUSTOM
का उपयोग करें आपकी प्रोपेल क्वेरी में आपके सबक्वेरी के साथ मानदंड।
यहाँ दूसरे विकल्प का एक उदाहरण दिया गया है:
$c = new Criteria();
$subSelect = "cart.category > (
SELECT cart.category
FROM carts
WHERE carts.id = 3)";
$c->add(CartPeer::CATEGORY, $subSelect, Criteria::CUSTOM);
संपादित करें: यहां पहले विकल्प का उदाहरण दिया गया है
// find the object we want to compare against
$c = new Criteria();
$c->add(CartPeer::ID, 3);
$cart = CartPeer::doSelectOne($c)
// then make the actual criteria
$c = new Criteria();
$c->add(CartPeer::CATEGORY, $cart->getCategory(), Criteria::GREATER_THAN)
इस विकल्प के साथ एकमात्र समस्या यह है कि आप दो प्रश्न कर रहे हैं एक के बजाय, जो आपके प्रदर्शन को प्रभावित कर सकता है, लेकिन यह निश्चित रूप से आपके आवेदन पर निर्भर करता है।