2012-03-21 23 views
7

मैं तालिका विरासत में शामिल हो गया हूं (इसे क्रिया को कॉल करने देता हूं) और मुझे इस शर्त को पूरा करने वाले कार्य के सभी रिकॉर्ड प्राप्त करने की आवश्यकता है, लेकिन फ़ील्ड उप-वर्गों में हैं? मूल क्वेरी लिखने के बिना उप-वर्ग फ़ील्ड तक पहुंचने का कोई तरीका है, लेकिन डीक्यूएल का उपयोग करें? (या क्वेरीबिल्डर)?सिद्धांत 2 - विरासत मानचित्रण, उप-वर्गों की पूछताछ

+0

क्षेत्रों में केवल एक ही वर्ग के हैं, या कई के लिए करता है एक प्रश्न के लिए उप-वर्ग? –

+0

सभी उप-वर्गों के पास एक अलग वर्ग का रिश्ता है, लेकिन संपत्ति हमेशा समान होती है। – CappY

+0

मुझे समझ में नहीं आता कि आप वास्तव में क्या करने की कोशिश कर रहे हैं। क्या आप संस्थाओं का एक छोटा सा एक्सपैपल पोस्ट कर सकते हैं और आप क्या पूछना चाहते हैं? –

उत्तर

0

यदि आपके पास उप-वर्ग है तो आप उस सबक्लास के लिए सीधे पूछ सकते हैं। अभिभावक वर्ग की गुण स्वचालित रूप से विरासत में प्राप्त की जाएगी (डुह)। मेरा मानना ​​है कि यह वही है जो आप खोज रहे हैं (इस आधार पर कि मैंने कक्षा तालिका विरासत को कैसे कार्यान्वित किया है)।

class User{ 
    private $id; 
    private $username; 
} 

class Merchant extends User{ 
    private $bizname; 
    private $isActive; 
} 

अब आप के अनुसार अगर मैं सक्रिय व्यापारियों प्राप्त करने के लिए, मैं निम्नलिखित करना होगा, और यह मेरे लिए काम करता है:

$qb->select('m.bizname') 
    ->from('Merchant','m') 
    ->where('m.isActive = :flag') 
    ->setParameter('flag',TRUE); 
+1

हां, यह काम करता है, लेकिन मैं चाहता हूं -> से ('उपयोगकर्ता', 'यू') -> और कहां ('userSubClass.isActive: flag'), यह समस्या है। – CappY

+0

उपर्युक्त क्वेरी उन सभी उपयोगकर्ताओं को प्रदान करती है जहां व्यापारी सक्रिय है .. इस बारे में सोचें .. जब आप उन उपयोगकर्ताओं को चुनना चाहते हैं जहां 'subclass active' .. इसका मतलब है कि यह केवल प्रकार के उप वर्ग के उपयोगकर्ता को वापस कर देगा .. इसलिए व्यापारियों का चयन करना जो सक्रिय हैं आप उपयोगकर्ता के सभी गुणों के साथ-साथ व्यापारी – Broncha

+0

हां, लेकिन मेरे पास 5 अलग-अलग उप-वर्ग हैं, और प्रत्येक उप-वर्ग में यह सत्यापित करने के लिए अलग-अलग स्थिति है कि यह सक्रिय है या नहीं। उदाहरण के लिए: – CappY