基本上我想用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/

10-09 00:20