我有一个双向的ManyToMany关系:Team< =>锦标赛与Championships_teams联赛。
我想首先获得所有团队和团队的订单。
一个简单的SQL查询来获取这个可以是:(在Mysql null中首先出现)
select *
from team left join championships_teams
on id=team_id
and championship_id=:specific_id
order by championship_id desc
我尝试使用查询构建器但没有成功 我可以使用查询构建器执行此类查询而不将championships_teams映射为实体吗?
答案 0 :(得分:0)
看看我对这个问题的回答 - symfony2 doctrine findBy id in arrayCollection
这似乎是一个类似的问题。您需要使用'会员资格'改性剂。
答案 1 :(得分:0)
我终于解决了我的麻烦:通过带有null值的查询来命令在表单中使用结果。
进行符合DQL的SQL查询。
SELECT t.*,IFNULL(c.year,0) as year
FROM Team t LEFT JOIN championships_teams ct
ON t.id = ct.team_id
LEFT JOIN Championship c
ON c.id = ct.championship_id
AND c.id = 76
WHERE e.league_id = 1
ORDRE BY year;
使用HIDDEN字How can I order by NULL in DQL?传递错误Expected argument of type "object or array", "string" given
。最后得到我的DQL查询:
$qb = $this->createQueryBuilder('t')
->leftJoin('t.championships', 'c',Expr\Join::WITH,'c.id = :champ_id' )
->setParameter('champ_id', $champ->getId())
->addSelect('IFNULL(-c.year,0) as HIDDEN year')
->where('t.league=:league_id')
->setParameter('league_id', $champ->getLeague())
->addorderBy('year')
->addorderBy('t.nom');
return $qb;
我认为我的问题没有很好地表达出来。希望这可以帮助别人。