मुझे एक प्रोजेक्ट मिला है जहां मैं ग्राहक आदेशों से निपटता हूं। उनमें से कुछ ऑर्डर Amazon.com के माध्यम से किए जाते हैं। इसलिए मुझे एक ऑर्डर इकाई मिली है, और एक अमेज़ॅनऑर्डर इकाई जो इसे विस्तारित करती है। AmazonOrder द्वारा जोड़ा गया एक चीज़ AmazonOrderId है।सिद्धांत 2: पॉलिमॉर्फिक क्वेरीज़: सबक्लास के गुणों पर खोज
मुझे एक व्यापक खोज सुविधा लागू करने की आवश्यकता है। उपयोगकर्ता कुछ सामान को टेक्स्ट बॉक्स में दर्ज कर सकता है, और अभिव्यक्ति के समूह में एक बड़े स्थान पर उपयोग किया जा सकता है। इसलिए, उदाहरण के लिए, यदि उपयोगकर्ता ने "111" की खोज की है, तो परिणामों में 111 से शुरू होने वाली आईडी के साथ कोई ऑर्डर शामिल है, किसी भी ऑर्डर को 111 से शुरू होने वाले ज़िप कोड पर भेज दिया जा रहा है, किसी भी ऑर्डर को "111 मुख्य सेंट" आदि में भेज दिया जा रहा है।
वह सामान एक क्वेरी-बिल्डर-निर्मित क्वेरी के साथ कार्यान्वित किया गया है जिसमें orX()
अभिव्यक्ति है।
अब, मैं सभी ऑर्डर के खिलाफ मेल खाना चाहता हूं, लेकिन अगर वे अमेज़ॅन ऑर्डर हैं, तो AmazonOrderId के खिलाफ भी मेल खाते हैं।
और मैं अटक कर रहा हूँ - मुझे लगता है यह संभव
यहाँ कैसे मैं क्वेरी का निर्माण कर रहा हूँ है नहीं हो सकता है:
$qb->select('o,s')->from('PMS\Entity\Order', 'o');
$qb->leftJoin('o.shippingInfo','s');
$qb->andWhere('o.status = :status');
$qb->setParameter('status',$status);
$qb->andWhere(
$qb->expr()->orX(
$qb->expr()->like('o.id',':query')
$qb->expr()->like('s.address',':query')
$qb->expr()->like('s.city',':query')
)
);
$qb->setParameter('query',$userQuery .'%');
$orders = $qb->getQuery()->getResult();
और मैं एक जोड़ने का तरीका को समझ नहीं सकता शर्त यह है कि कहते हैं, मोटे तौर पर, "या (आदेश एक AmazonOrder है और AmazonOrderId की तरह '$ userQuery%')"
कोई भी किसी भी जानकारी है? या तो इसे संभालने का कोई तरीका, या कम से कम एक पुष्टि है कि यह इस तरह से करने योग्य नहीं है?
यह संयुक्त कुंजी के साथ इकाइयों के लिए भी अच्छी तरह से काम करता है। – Wilt
अगर मैं इस जवाब को एक बार फिर वोट दे सकता हूं तो मैं इसे करूँगा! – Wilt
इसके लिए धन्यवाद! रिकॉर्ड के लिए डीक्यूएल में: ओ ऑर्डर के साथ अमेज़ॅनऑर्डर एओ में शामिल करें o.id = ao.id – omgitsdrobinoha