我在 1:n 关系中有两个实体:Race 和 Day - 一场比赛可能有更多天。这是简单的模型:
Race (id)
Day (id, race_id, is_active, is_deleted)
我想通过 Doctrine 在 Symfony2 项目中访问上级 - Race - 并在 Twig 模板中显示结果。对于直接的 Race 属性,这很容易。
但是,当我想在 Race 中使用自定义定义的方法(某种标志,我们称之为 hasActiveDays())来反映比赛是否有任何活动且未删除的日子时,它变得更加棘手。简单的 Doctrine 关系是不够的,所以我需要使用这样的查询:
SELECT d FROM mtboLibBundle:Day d WHERE d.isActive = 1 AND d.isDeleted = 0 AND d.raceId = :id
我的问题基本上是在哪里/如何实现这个查询以及如何在树枝模板中调用它?到目前为止,我尝试过的任何事情都会导致各种错误,所以如果有人能提供帮助,我将不胜感激。
即这是一个尝试:
class RaceRepository extends EntityRepository {
public function hasActiveDays() {
$em = $this->getEntityManager();
$query = $em->createQuery('SELECT f FROM mtboLibBundle:Day d
WHERE d.isActive = 1
AND d.isDeleted = 0
AND d.raceId = :id')
->setParameter('id', $this->id)
;
$days = $query->getResult();
return (count($days) == 0) ? false : true;
}
}
方法不存在 - 从模板调用时:
{{ race.hasActiveDays }}