我的Symfony2项目中有一个树枝模板。在树枝模板中,我有一个实体对象。此实体对象链接到具有 oneToMany 关系的另一个实体。
例:
{{ submission }} -> Submission entity
{{ submission.histories }} -> Histories entity -> I have here an array collection of histories
实体历史记录有一个字段"state_to"
我的目标是仅获取state_to为 4 的历史记录对象
我试过这样:
{{ submission.histories('status_to', 4)[0] }}
但这行不通。
我知道我可以使用:
{% for history in submission.histories %}
{% if history.statusTo == 4 %}
{{ history.statusDate|date("d F Y") }}
{% endif %}
{% endfor %}
但我非常确信有更好的方法。
在
实体中添加方法getHistoryByStatus($status)
以根据status_to
字段筛选历史记录,然后在模板中:
{% set filtered_history = submission.historyByStatus(4)|default(false) %}
{% if filtered_history %}
{{ filtered_history.statusDate|date("d F Y") }}
{% endif %}
您可以在
控制器中调用的方法中找到state_to为 4 的 history 对象。 然后将其传递给视图。此方法可以在控制器内部,但最好将其放在历史记录存储库中?或经理..
尽量避免视图中的复杂性。