2011-11-03 60 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,但對我們來說這工作得很好