我有三个表格/实体:
我必须在Doctrine 2中编写查询,这将使所有游戏(作为对象)都可用于特定站点(将此特定站点作为对象)。唯一的关系(多到一个)在表/实体SiteGame中,它包含列/对象:
通常,原始SQL看起来(并且会工作):
SELECT g FROM site_games s INNER JOIN games g ON g.id=s.game_id WHERE site_id='4';这是我尝试过的理论,但失败了:
$qb = $this->getEntityManager()->createQueryBuilder();
$qb->select("s.game")
->from("MyBundle:SiteGame","s")
->where("s.site = :site")
->setParameter("site",$site);错误:无效的PathExpression。一定是StateFieldPathExpression。
$qb = $this->getEntityManager()->createQueryBuilder();
$qb->select("g")
->from("MyBundle:SiteGame","s")
->join("s.game","g")
->where("s.site = :site")
->setParameter("site",$site);错误:如果不选择至少一个根实体别名,则无法通过标识变量选择实体。
还有更多的具有类似错误的不同组合。
我在整个互联网上找不到任何有用的东西。
发布于 2016-04-09 23:28:35
我假定Games实体没有与SiteGames的OneToMany关系。您在这里有几种选择:
SiteGames没有任何其他属性( game和site ),则可以完全删除该实体并使用正确的ManyToMany映射。OneToMany映射添加到Games我同意第一种选择。
https://stackoverflow.com/questions/36523098
复制相似问题