带有多个连接表的Doctrine DQL

时间:2016-02-12 15:52:36

标签: symfony doctrine dql

我有实体**目标,citytarget,城市,城市,地方

citytarget& cityplace是连接t& c和c& p

的数据透视表

我需要给定城市名称和目标ID的地点

我尝试了以下DQL:

SELECT t,c,p FROM MulticatorBundle:Target t
            join t.cities ct
            join ct.cities c
            join c.places cp
            join cp.places p
            where c.name like '%Stahmeln%'

但我收到了:

结果:找不到别名为“c”的实体结果的父对象。父别名是'ct'。

我不知道还有什么......

一个普通的SQL可能是:

select * from target 
left join citytarget on citytarget.target_id = target.id
left join city on citytarget.city_id = city.id 
left join cityplace on cityplace.city_id = city.id 
left join place on cityplace.id = place.id 
where target.id = 1 
and city.name like \'%Stahmeln%\'

阿德里安

2 个答案:

答案 0 :(得分:2)

你需要做

SELECT t,ct, c, cp ,p FROM MulticatorBundle:Target t
            join t.cities ct
            join ct.cities c
            join c.places cp
            join cp.places p
            where c.name like '%Stahmeln%'

希望这能帮到你

答案 1 :(得分:2)

您的选择中始终需要您的父实体。在这种情况下:

SELECT ct, c, cp, t, p
需要