2010-01-20 6 views
5

में संबंध से कोई ऑब्जेक्ट मौजूद है या नहीं, मैं सिद्धांत के साथ सिम्फनी का उपयोग कर रहा हूं।डाटाबेस

मैं दो परिभाषित, व्यक्ति और छात्र एक रिश्ता से एक करने के लिए से एक कक्षाएं, है।

प्रत्येक छात्र एक व्यक्ति से संबंधित है, लेकिन हर व्यक्ति एक छात्र साथ एक रिश्ता है।

जब मैं फोन ...

$person->getStudent(); 

... मैं हमेशा मिलता है और वस्तु, चाहे कुछ व्यक्ति एक छात्र नहीं है। मुझे कैसे पता चलेगा कि यह नहीं है (छात्र) डेटाबेस में मौजूद है?

धन्यवाद।

उत्तर

9

मुझे लगता है कि

$person->getStudent()->exists(); 

यह करना चाहिए। कम से कम Doctrine API documentation के अनुसार।
आपको जो वस्तु मिलती है वह शायद किसी प्रकार का शून्य रिकॉर्ड है।

+0

@Felix धन्यवाद! लेकिन यह बेहतर होगा अगर यह 'शून्य' वापस लौटाएगा जब रिकॉर्ड मौजूद नहीं है ¿है ना? आपकी सहायता के लिए धन्यवाद. – kiewic

+0

@Kiewic: हां मुझे इसके साथ भी समस्याएं थीं और किसी ऑब्जेक्ट की बजाय 'शून्य' मान की उम्मीद थी। अगर आपको उत्तर उपयोगी लगता है, तो कृपया इसे स्वीकार करें। –

2

एक सुंदर नई विधि है (मुझे लगता है कि डॉक्टर 1.2 के बाद से): $person->hasReference("Student"); वास्तव में व्यक्ति से जुड़े छात्र हैं या नहीं, इससे कोई फर्क नहीं पड़ता कि यह पहले से ही डेटाबेस में नहीं है या नहीं, और बिना बनाए गए वांछित एक नया छात्र रिकॉर्ड। यह कॉल उन परिस्थितियों में उपयुक्त हो सकती है जब अनुप्रयोग तर्क संबंधित वस्तु के दृढ़ता की परवाह नहीं करता है, उदा। जबकि एक लेनदेन के भीतर (मुझे लगता है)। आशा है कि एक सा, चियर्स में मदद करता है, राफेल

2

तुम भी Doctrine_Record::relatedExists() उपयोग कर सकते हैं, जो hasReference()

के पूरक की तरह है आप इस तरह इसका इस्तेमाल:

if ($person->relatedExists('Student')) 
+0

हां, '$ व्यक्ति-> संबंधित एक्सिसिस्ट्स (' छात्र ') का उपयोग करके' $ व्यक्ति-> छात्र-> मौजूद है(); '' के मुकाबले बहुत बेहतर है, क्योंकि बाद में वास्तव में स्मृति में एक नया "रिक्त" ऑब्जेक्ट बना देगा , इसे '$ व्यक्ति' से संलग्न करें और इसे रिक्त पंक्ति के रूप में डालेंगे जब/यदि आप '$ person-> save() को कॉल करते हैं;' – Julien

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^