2011-11-03 63 views
0

所以我试图对一个包含两个外键的表进行查询。此表基本上都会设置特定的用户ID是一个特定了zoneid的“管理员”在我们的应用我DQL是这样的:Symfony2/Doctrine DQL QueryException

'SELECT z, zone FROM MLBPBeerBundle:TableZoneAdmins z JOIN z.zoneAdminsZID WHERE z.zoneAdminsPID = '.$userID .'AND zone.zoneId = z.zoneAdminsZID' 

我收到此错误:

An exception has been thrown during the rendering of a template ("[Syntax Error] line 0, col 80: Error: Expected end of string, got 'z'") in "MLBPBeerBundle:Profile:index.html.twig" at line 10.

通过观察查询有问题的部分“line 0,col 80是z.zoneAdminsPID的开头,这意味着至少在我对错误的解释中,它期望字符串在WHERE之后结束并没有意义

什么使得这更令人困惑的是我已经成功使用了simi LAR查询来获取一个队名出其中有一个外键球队ID我们的游戏表:

'SELECT g, team1 FROM MLBPBeerBundle:TableGame g JOIN g.gameWinnertid WHERE g.gameZoneid = '.$zoneId .'AND team1.id = g.gameWinnertid' 

感谢您的帮助,您可以提供这给我留下难倒我,我真的不看到两个查询如何操作不是事实,另一方面,他们被抓不同的数据

回答

0

我能够不包括JOIN来解决这个问题,Symfony的更自动魔法比我想象中的事实差

SELECT z FROM MLBPBeerBundle:TableZoneAdmins z WHERE z.zoneAdminsPID = '.$userID 

从这里zoneAdminsZID是一个合适的区域实体,现在我相信这是懒惰地加载这个实体aka不开火查询,直到我“derefence”的ZID,但对我们来说这工作得很好