我正在使用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 %}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。