Điều này là không thể bởi vì bạn không thể thực hiện một phép nối thích hợp. Tham gia trong trường hợp này sẽ phụ thuộc vào giá trị trong cấp độ gốc và cấp độ con (tức là mỗi hàng có thể cần phải tham gia vào một bảng khác nhau). Ngoài ra, làm thế nào học thuyết sẽ biết loại bản ghi nào cần hydrat hóa (ví dụ:vì nó phụ thuộc vào loại thực thể).
Bạn có thể rút ra một cái gì đó như thế này (mặc dù nó sẽ kỳ lạ) bằng cách sử dụng mệnh đề WITH trên các phép nối của bạn. Ví dụ:trong phương thức setUp () của mô hình tin tức, bạn có thể thực hiện:
$this->hasMany('Links as NewsVideoLinks', array('local' => 'id', 'foreign' => 'parent_id'));
Và trong quá trình thiết lập mô hình Liên kết của bạn:
$this->hasMany('Videos as videos', array('local' => 'child_id', 'foreign' => 'id'));
Bạn sẽ cần xác định tất cả các kết hợp của phép nối trong mô hình Liên kết. Ý tôi là, bạn cần phải nói với nó rằng nó có nhiều tin tức và album cũng như sử dụng cả child_id và parent_id.
Và sau đó trong truy vấn của bạn, bạn sẽ cần thực hiện một số việc như:
$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();
Như bạn có thể thấy điều này rất cồng kềnh. Tôi thực sự khuyên bạn nên tạo các bảng tham gia cho mỗi mối quan hệ. Bạn vẫn sẽ nhận được những gì bạn đang tìm kiếm bằng cách tham gia vào từng bàn tham gia.