Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用Symfony按其他实体对实体进行分组_Php_Symfony_Doctrine Orm_Entity_Dql - Fatal编程技术网

Php 如何使用Symfony按其他实体对实体进行分组

Php 如何使用Symfony按其他实体对实体进行分组,php,symfony,doctrine-orm,entity,dql,Php,Symfony,Doctrine Orm,Entity,Dql,我正在使用条令进行Symfony项目 所以我有3个实体: 计划 活动 类别 一个项目有几个活动,一个活动也有几个类别 我正在尝试获取所有活动,按项目类别分组 正确的做法是什么 我尝试使用QueryBuilder,但似乎无法使用其他实体进行分组,只能使用值(如果我错了,请告诉我) 编辑 我真正需要的是显示一个类别列表,其中包含相应的活动 -Category1 -Activity1 -Activity2 -Activity3 -Category2 -Act

我正在使用条令进行Symfony项目

所以我有3个实体:

  • 计划
  • 活动
  • 类别
一个项目有几个活动,一个活动也有几个类别

我正在尝试获取所有活动,按项目类别分组

正确的做法是什么

我尝试使用QueryBuilder,但似乎无法使用其他实体进行分组,只能使用值(如果我错了,请告诉我)

编辑 我真正需要的是显示一个类别列表,其中包含相应的活动

-Category1
     -Activity1
     -Activity2
     -Activity3
-Category2
     -Activity3
     -Activity4
-Category4
     -Activity1
     -Activity2
     -Activity3
     -Activity4
     -Activity5
我做这件事的方式好吗?我的代码错了吗?还是我到处都错了


非常感谢您抽出时间

您应该获取并迭代类别,而不是操作:

$q = $categoryRepo->createQueryBuilder('c')
    ->leftJoin('c.actions', 'a')
    ->leftJoin('a.project', 'p')
    ->where('p.id = ?1')
    ->setParameter(1, $projectId)
    ->getQuery();
return $q->getResult();
然后,在模板中(您使用的是细枝吗?)


在SQL\DQL中,
groupBy
用于进行计数、平均值、总和等计算。。您真正需要做的是什么?我需要显示一个类别列表,其中包含相应的活动。然后,您应该获取并迭代类别,而不是我使用的twig;)谢谢你的回答,我很高兴看到有一个更简单的方法:D“if action.project.id=1”是用来做什么的?它只过滤你想要的动作。这不是干净的代码,我不完全知道你想过滤掉谁。请随意写下,若条件以另一种方式确定并没有问题,实际上,“where('p.id=?1')”操作已经被过滤,所以无需再次过滤。我在我的项目中检查了您的代码(通过重构),它工作得很好!谢谢!
$q = $categoryRepo->createQueryBuilder('c')
    ->leftJoin('c.actions', 'a')
    ->leftJoin('a.project', 'p')
    ->where('p.id = ?1')
    ->setParameter(1, $projectId)
    ->getQuery();
return $q->getResult();
{% for category in categories %}
 - {{ category }}
    {% for action in category.actions if action.project.id = 1 %}
     - {{ action }}
    {% endfor %}
{% endfor %}