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



所以我有一个名为服务的实体,用户可以去那里报告他们的一天,另一个实体叫做访问,它报告了用户当天的个人访问信息。 这是一种一对多的关系。 一个表格到多次访问。

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

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

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

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

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

// 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();
}

最新更新