基本上我想用 doctrine 执行这个 mysql 查询:
select distinct user_id from work_hour where project_id = ?;
但我不知道如何使用漂亮的 Doctrine 代码来做到这一点。是否可以使其看起来像以下伪代码,或者我是否必须使用查询构建器?:
$project = new Project();
...
$entities = $em->getRepository('AppBundle:WorkHour')
->findByProject($project)->selectUser()->distinct();
其中 $entities 是用户对象的数组
WorkHour 和 Project 有 ManyToOne 关系
WorkHour 和 User 有 ManyToOne 关系
最佳答案
您需要使用 QueryBuilder
为此,但这仍然是相当“漂亮的 Doctrine 代码”并且看起来仍然很像您的伪代码。
这样的事情应该有效:
$queryBuilder = $em->createQueryBuilder();
$query = queryBuilder
->select('u')
->distinct()
->from('AppBundle:User', 'u')
->join('AppBundle:WorkHour', 'wh')
->where('u.workHour = wh')
->andWhere('wh.project = :project')
->getQuery();
$query->setParameter(':project', $project);
$entities = $query->getResult();
关于php - Symfony Doctrine findBy 然后映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30777885/