2012-02-10 16 views
8

मैं निम्नलिखित श्रेणियां होती हैं कहते हैं:सिद्धांत 2 में कई लोगों के रिश्ते में इकाइयों को कैसे निकालना है?

class Store 
{ 
    /** 
    * @ManyToMany(targetEntity="PaymentMethod") 
    */ 
    protected $paymentMethods; 
} 

class PaymentMethod 
{ 
} 

जब हम हटाना (या बस, को निष्क्रिय वास्तव में डेटाबेस से निकाले बिना) एक PaymentMethod, हम चाहते हैं कि इस paymentMethod सभी Store::$paymentMethods संग्रह से निकाल दिया जाएगा।

अब तक, हम इस के लिए जंक्शन मेज पर कच्चे एसक्यूएल प्रश्नों का उपयोग कर:

DELETE FROM StorePaymentMethod WHERE paymentMethodId = ? 

वहाँ ऐसा करने के लिए सिद्धांत में, DQL में अधिमानतः एक तरीका है?

+0

मुझे यह सीधे प्राप्त करने दें। आप स्टोर क्लास में सूची से हटाए गए भुगतान विधियों को हटाना चाहते हैं? इसे डीबी से हटाने से इसे सूची से हटाया नहीं जाएगा। – jere

+0

यदि यह कई लोगों के लिए है, तो क्या आप 'भुगतान विधि' में '$ स्टोर' संग्रह को खाली संग्रह में सेट नहीं कर सकते हैं और इसे जारी रख सकते हैं? आपको यह सुनिश्चित करने के लिए स्मृति में सभी 'स्टोर' ऑब्जेक्ट्स को अमान्य करने की आवश्यकता होगी कि उनके पारस्परिक लिंक रिकॉर्ड नहीं रखे। हालांकि एक आदर्श दुनिया में, रिक्त प्रदर्शन करने के लिए आपके द्वारा लिखे गए एक्सेसर्स विधियों को पारस्परिक लिंक को हटाने 'स्टोर' के माध्यम से जाना होगा। – Orbling

उत्तर

-2

इन लाइनों के साथ कुछ?

$qb = $em->createQueryBuilder(); 

$qb->delete('StorePaymentMethod', 'spm') 
    ->where('spm.paymentMethodId = : paymentMethodId') 
    ->setParameter('paymentMethodId', $id); 

return $qb->getQuery()->getResult(); 
+1

StorePaymentMethod एक इकाई नहीं है, यह सिर्फ शामिल तालिका है। तो डीक्यूएल में इसका दुर्भाग्य से कोई मतलब नहीं है! – Benjamin