Symfony2-“;无关联“;
我仍在努力与Symfony2和Doctrine中的Join合作 到目前为止,我得到了这个: 控制器Symfony2-“;无关联“;,symfony,doctrine,Symfony,Doctrine,我仍在努力与Symfony2和Doctrine中的Join合作 到目前为止,我得到了这个: 控制器 $ownRepo = $this->getDoctrine() ->getRepository('GameShelfUsersBundle:Ownership'); $ownQuery = $ownRepo->createQueryBuilder('own') ->leftJoin('own.games','g', 'WIT
$ownRepo = $this->getDoctrine()
->getRepository('GameShelfUsersBundle:Ownership');
$ownQuery = $ownRepo->createQueryBuilder('own')
->leftJoin('own.games','g', 'WITH', 'g.id = own.game')
->where('own.user = :user')
->andWhere('own.own = :type')
->setParameters(array(
'user' => $user,
'type' => $type
))
->orderBy('own.updated','desc')
->getQuery()
->getResult();
所有权实体(底部)-因为它很长-
我尝试运行控制器时出错:
QueryException: [Semantical Error] line 0, col 79 near 'g WITH g.id =': Error: Class GameShelf\UsersBundle\Entity\Ownership has no association named games
QueryException: SELECT own FROM GameShelf\UsersBundle\Entity\Ownership own LEFT JOIN own.games g WITH g.id = own.game WHERE own.user = :user AND own.own = :type ORDER BY own.updated desc
我在这里做错了什么?很可能是因为您混合了yml和注释映射。既然你既有
游戏
又有游戏
,那么在这种情况下,你可能把关系搞混了。如果你使用多对一的关系,让条令帮你完成任务,生活会容易得多。把带着的东西放在左边的连接上。您所需要的只是:->leftJoin('own.games','g')D2足够聪明,可以了解细节。当然,您的所有权实体需要定义游戏关系。除非是一对一的关系,否则就把游戏换成游戏。