加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 如何使用Symfony将实体分组为其他实体

发布时间:2020-12-13 15:55:27 所属栏目:PHP教程 来源:网络整理
导读:我正在使用Doctrine从事Symfony项目 所以我有3个实体: 项目 活动 类别 一个项目有几个活动,一个活动也有几个类别 我正在尝试按项目类别进行所有活动. 这样做的正确方法是什么? 我尝试使用QueryBuilder,但似乎你不能用其他实体分组,只能用一个值(告诉我,如
我正在使用Doctrine从事Symfony项目

所以我有3个实体:

>项目
>活动
>类别

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

我正在尝试按项目类别进行所有活动.

这样做的正确方法是什么?

我尝试使用QueryBuilder,但似乎你不能用其他实体分组,只能用一个值(告诉我,如果我错了)

$q = $repo->createQueryBuilder('a')
        ->leftJoin('a.project','p')
        ->leftJoin('a.categories','category')
        ->where('p.id = ?1')
        ->setParameter(1,$projectId)
        ->groupBy('category.id')
        ->getQuery();
    return $q->getResult();

编辑
我真正需要的是显示内部具有相应活动的类别列表

-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();

然后,在你的模板中(你使用的是Twig吗?)

{% for category in categories %}
 - {{ category }}
    {% for action in category.actions if action.project.id = 1 %}
     - {{ action }}
    {% endfor %}
{% endfor %}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读