यह संभव नहीं है क्योंकि आप उचित जॉइन नहीं कर सकते। इस मामले में शामिल होना parent_entity और child_entity में मान पर निर्भर करेगा (यानी प्रत्येक पंक्ति को किसी भिन्न तालिका में शामिल होने की आवश्यकता हो सकती है)। इसके अलावा, सिद्धांत को कैसे पता चलेगा कि किस रिकॉर्ड प्रकार को हाइड्रेट करना है (अर्थात क्योंकि यह इकाई प्रकार पर निर्भर है)।
आप अपने जॉइन पर WITH क्लॉज का उपयोग करके कुछ इस तरह से खींच सकते हैं (यद्यपि यह अजीब होगा)। उदाहरण के लिए, अपने समाचार मॉडल के सेटअप () पद्धति में आप यह कर सकते हैं:
$this->hasMany('Links as NewsVideoLinks', array('local' => 'id', 'foreign' => 'parent_id'));
और आपके लिंक मॉडल के सेटअप में:
$this->hasMany('Videos as videos', array('local' => 'child_id', 'foreign' => 'id'));
आपको लिंक्स मॉडल में जॉइन के सभी संयोजनों को परिभाषित करने की आवश्यकता होगी। मेरा मतलब यह है कि आपको यह बताना होगा कि इसमें चाइल्ड_आईडी और पैरेंट_आईडी दोनों का उपयोग करते हुए कई समाचार और एल्बम हैं।
और फिर अपनी क्वेरी में, आपको कुछ ऐसा करना होगा:
$query = Doctrine_Query::create();
$query->from('News n');
$query->innerJoin("n.NewsVideoLinks as links WITH parent_entity = 'news'");
$query->innerJoin("links.Videos as vids WITH child_entity = 'videos'");
$results = $query->execute();
जैसा कि आप देख सकते हैं कि यह बहुत बोझिल है। मैं प्रत्येक संबंध के लिए जॉइन टेबल बनाने की अत्यधिक अनुशंसा करता हूं। प्रत्येक जॉइन टेबल से जुड़कर आप अभी भी वह प्राप्त कर सकते हैं जिसकी आप तलाश कर रहे हैं।