我使用Symfony 3,我正在创建自己的论坛,目前我处于权限状态。
正如你所看到的,我的用户可以有很多组,所以我想得到我的查询,我的类别列表(带有权限)和他们的论坛(每个用户的权限)。我想在他的屏幕上得到最好的效果,在我的屏幕中,(user_group == 2)没有烫发,而(user_group == 1)拥有所有的烫发。我希望得到所有用户线和组,并在每次自动化时使用MAX(can_ *)来了解他能做什么。
(我不希望获得更好的用户群组权限,而是每个字段的最佳权限)
Other example with my category_id == 1
我会得到所有真实的结果
我当前的查询如下:
public function getCategoriesWithForums(\UserBundle\Entity\User $user)
{
$ids = array();
foreach ($user->getGroups() as $group)
{
$ids[] = $group->getId();
}
return $this->createQueryBuilder('c')
// permissions catégory
->innerJoin('c.permissions', 'cp')->addSelect('cp, MAX(cp.canSee), MAX(cp.canEnter), MAX(cp.canPost), MAX(cp.canReply), MAX(cp.canEdit), MAX(cp.canDelete)')
->andWhere('cp.userGroup IN (:ids)')->setParameter('ids', implode(',', $ids))
->innerJoin('c.forums', 'f')->addSelect('f')
// permissions forums
->innerJoin('f.permissions', 'fp')->addSelect('fp, MAX(fp.canSee), MAX(fp.canEnter), MAX(fp.canPost), MAX(fp.canReply), MAX(fp.canEdit), MAX(fp.canDelete)')
->andWhere('fp.userGroup IN (:ids)')->setParameter('ids', implode(',', $ids))
->leftJoin('f.lastPost', 'lastPost')->addSelect('lastPost')
->leftJoin('lastPost.topic', 'topicLastPost')->addSelect('topicLastPost')
->orderBy('c.position', 'ASC')
->addOrderBy('f.position', 'ASC')
->getQuery()->getResult();
}
Symfony 3生成的查询:(需要10个声誉):pastebin dot com / 0vX9ej2a
最后,我得到了错误 ..
SQLSTATE [42000]:语法错误或访问冲突:1140聚合 没有GROUP BY的查询
的表达式#13
SELECT list contains nonaggregated column 'gtav.f2_.id'; this is incompatible with sql_mode=only_full_group_by
你有什么想法解决这个问题并获得正确的结果吗? 我希望你能帮我解决这个问题