具有多个连接表的 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
需要
我有实体 **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
需要