基本上我想用docine执行这个mysql查询:
select distinct user_id from work_hour where project_id = ?;
但我不知道如何用漂亮的代码来做这个。是否可以使其看起来像以下伪代码,或者我必须使用查询生成器?:
$project = new Project();
...
$entities = $em->getRepository('AppBundle:WorkHour')
->findByProject($project)->selectUser()->distinct();
其中$entities是用户对象的数组
工时与项目之间存在着一一对应的关系
工时与用户之间存在多对一关系
最佳答案
您需要使用QueryBuilder
来实现这一点,但这仍然是一个相当“漂亮的条令代码”,而且看起来仍然很像您的伪代码。
这样的做法应该管用:
$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/