Symfony2-“;无关联“;

Symfony2-“;无关联“;,symfony,doctrine,Symfony,Doctrine,我仍在努力与Symfony2和Doctrine中的Join合作 到目前为止,我得到了这个: 控制器 $ownRepo = $this->getDoctrine() ->getRepository('GameShelfUsersBundle:Ownership'); $ownQuery = $ownRepo->createQueryBuilder('own') ->leftJoin('own.games','g', 'WIT

我仍在努力与Symfony2和Doctrine中的Join合作

到目前为止,我得到了这个:

控制器

    $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足够聪明,可以了解细节。当然,您的所有权实体需要定义游戏关系。除非是一对一的关系,否则就把游戏换成游戏。