Това не е възможно, защото не можете да направите правилно присъединяване. Обединяването в този случай ще зависи от стойността в parent_entity и child_entity (т.е. всеки ред може да се наложи да се присъедини към различна таблица). В допълнение, как доктрината ще знае кой тип запис да хидратира (т.е. защото зависи от типа обект).
Може да успеете да извадите нещо подобно (макар и да е странно), като използвате клаузата WITH във вашите съединения. Например, в метода setUp() на вашия модел на новини можете да направите:
$this->hasMany('Links as NewsVideoLinks', array('local' => 'id', 'foreign' => 'parent_id'));
И в настройката на вашия модел връзки:
$this->hasMany('Videos as videos', array('local' => 'child_id', 'foreign' => 'id'));
Ще трябва да дефинирате всички комбинации от съединения в модела връзки. Това, което имам предвид, е, че трябва да му кажете, че има много новини и албуми, като използвате и child_id, и parent_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();
Както можете да видите, това е много тромаво. Горещо бих препоръчал създаването на таблици за свързване за всяка релация. Все пак ще получите това, което търсите, като се присъедините към всяка маса за присъединяване.