Nie jest to możliwe, ponieważ nie możesz wykonać prawidłowego sprzężenia. Dołączenie w tym przypadku będzie zależeć od wartości w parent_entity i child_entity (tj. każdy wiersz może wymagać dołączenia do innej tabeli). Ponadto, w jaki sposób doktryna będzie wiedziała, który typ rekordu należy uwodnić (tj. ponieważ zależy to od typu jednostki).
Możesz być w stanie wyciągnąć coś takiego (choć będzie to dziwne) za pomocą klauzuli WITH w swoich sprzężeniach. Na przykład w metodzie setUp() twojego modelu wiadomości możesz zrobić:
$this->hasMany('Links as NewsVideoLinks', array('local' => 'id', 'foreign' => 'parent_id'));
A w konfiguracji modelu Links:
$this->hasMany('Videos as videos', array('local' => 'child_id', 'foreign' => 'id'));
Musisz zdefiniować wszystkie kombinacje złączeń w modelu Links. Chodzi mi o to, że musisz mu powiedzieć, że ma wiele wiadomości i albumów, używając zarówno identyfikatora dziecka, jak i identyfikatora rodzica.
A następnie w zapytaniu musisz zrobić coś takiego:
$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();
Jak widać jest to bardzo uciążliwe. Gorąco polecam tworzenie tabel złączeń dla każdej relacji. Nadal dostaniesz to, czego szukasz, dołączając do każdego stołu dołączania.