在这种情况下,我有3个相关实体
profile
--OneToMany-> annualReports
--ManyToOne-> photo
在一个循环中,对于一张桌子,我正在检查像这样的树枝中是否存在照片
{% set is_photo = profile.annualReports.toArray()[0].photo.id is defined %}
因此,profile
可以有很多annualReports
-这种情况我只想要第一个“报告”。
问题是如何在QueryBuilder
中执行此操作?即加入“第一份报告”(“第一份报告可以基于最小id或createdAt日期)
更新: 我想问题是我怎么能“限制1”并指定排序?
答案 0 :(得分:2)
如果要获取第一个报告,只需使用Collection类的方法first
即可:
{% if profile.annualReports IS NOT EMPTY %}
{% set report = profile.annualReports.first %}
{% endif%}
并且要管理订单,您必须使用原则注释'@OrderBy': https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/annotations-reference.html#orderby
/**
* @ManyToMany(targetEntity="Group")
* @OrderBy({"name" = "ASC"})
*/
private $groups;