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

PHP Symfony sorting entities using Doctrine entity attribute and associated entity attributes

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

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

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

我通过创建一个按 startTime 对访问进行排序的 Twig 过滤器,使其适用于具有多次访问的表单。但这不是一个好的方法。我确信它需要完成在存储库中,但我无法终生弄清楚如何让它工作。

有人可以就如何编写查询生成器来实现这一目标提供一些建议吗?

您可以通过多种方式进行,但最好是在查询数据库时进行排序。您可以使用 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();
}