2 回答
TA贡献1943条经验 获得超7个赞
您只需提取第一个元素,而不是循环:
{% if not empty salarie.contrats %}
{% set contrat = salarie.contrats[0] %}
{# you can also use salarie.contrats|first #}
{{ contrat.departement }}
{% endif %}
CriteriaCollection即使只有一个元素也会返回 a ,因此您可以应用与上述相同的原则。
尽管您也可以在将结果传递给 twig 之前在控制器中提取结果,并将它们作为实体而不是集合传递。在上面的存储库中:
/**
* @returns Contrat|null
*/
public function getLastContrat()
{
$criteria = Criteria::create()
->orderBy(['dateDebut' => 'DESC'])
->setMaxResults(1);
return $this->contrats->matching($criteria)->first();
}
TA贡献1852条经验 获得超1个赞
您可以做的另一件事是将另一个变量与要呈现的相关对象一起传递到模板中(在您的情况下是最后一个)。因此,在您的控制器中,您首先获取 Salarie 对象,然后获取所需的 contrat。这不是最 DRY 的解决方案,但如果您没有更多需要/想要重用一段代码的用例,您就不能真正应用 DRY。因此,这种方法很好,因为您的实体不需要任何标准逻辑,而且性能非常好,因为您只获取所需的内容。
如果你没有更多的用例可能会重复使用代码,那么不要过度优化,等待情况发生,然后你可以根据实际需要寻找一种方法来共享你的代码,不相信:)
- 2 回答
- 0 关注
- 130 浏览
添加回答
举报