Symfony2 doctrine查询从3个表中获取数据

时间:2016-01-18 06:07:07

标签: php postgresql symfony doctrine-orm sonata-user-bundle

我正在使用Symfony Sonata用户包进行用户管理。我创建了另一个实体LoginHistoryOneToManyUser之间的关联LoginHistory

我必须显示使用KNP Paginator Bundle的所有用户的列表及其组名(通常只属于一个组),其中包含详细的登录历史记录。

我已经写了这个查询,但它没有得到用户的组数据。

 $query = $repository->createQueryBuilder('u')
                     ->join('PNCLogBundle:LoginHistory', 'log', 'WITH log.User = u.id')
                     ->innerJoin('u.groups', 'g')
                     ->andwhere('g.id = u.group')
                     ->where('u.roles LIKE :roles')
                     ->setParameter('roles', '%"ROLE_STAFF"%')
                     ->getQuery();

1 个答案:

答案 0 :(得分:0)

  

有两种类型的JOIN:“常规”加入和“获取”加入。

您需要的是获取加入。你可以阅读in the doctrine2 documentation。解决方案很简单,只需在查询构建器中的select子句中添加x = 1; for k = 1:21 S(k) = (2./sqrt(2*pi))*(cumsum((x.^(2*(k-1)-1)*(-1.^((k-1)+2)))./((2.^(k-1))*(factorial(k-1))*(2*(k-1)+1)))) end

g

您还可以使用$query = $repository->createQueryBuilder('u') ->select('u', 'g') ->join('PNCLogBundle:LoginHistory', 'log', 'WITH log.User = u.id') ->innerJoin('u.groups', 'g') ->andwhere('g.id = u.group') ->where('u.roles LIKE :roles') ->setParameter('roles', '%"ROLE_STAFF"%') ->getQuery(); 方法:

addSelect