具有多个连接表的 Doctrine DQL

Doctrine DQL with multiple joined tables

我有实体 **target,citytarget,city,cityplace,place

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%\'

阿德里安

你需要做的

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%'

希望对您有所帮助

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

SELECT ct, c, cp, t, p

需要