PHP Symfony使用Doctrine实体属性和关联的实体属性对实体进行排序

时间:2018-05-08 21:47:54

标签: php symfony doctrine associations entity

所以我有一个名为“服务”的实体,用户可以在该实体上报告他们的日期,另一个实体称为访问,其中包含当天用户所拥有的个人访问的报告信息。它是一对多的关系。一种形式到多次访问。

表单有日期 访问有访问开始和停止时间。

我正在尝试创建一个报告,显示当月创建的每个表单,首先是form.date,然后是visit.startTime。但对于我的生活,我无法弄清楚这一点。也许我在思考它。

我通过创建一个Twig过滤器来查找具有多次访问权限的表单,该过滤器通过startTime对访问进行排序..但这并不是一个好方法。我确定它需要是在存储库中完成,但我不能为我的生活弄清楚如何让它工作。

有些人可能会提供一些关于如何编写查询构建器的建议吗?

1 个答案:

答案 0 :(得分:2)

您可以通过多种方式执行此操作,但最好在查询数据库时进行排序。您可以使用Doctrine\ORM\QueryBuilder从数据库中检索数据。例如:

// ServiceRepository
public function getServicesWithVisists() {
    $builder = $this->createQueryBuilder('s');
    $builder->select('s', 'v')
        ->leftJoin('s.visits', 'v')
        ->orderBy('s.date', 'ASC')
        ->addOrderBy('v.startTime', 'ASC');

    return $builder->getQuery()->getResult();
}