php - Symfony Doctrine findBy 然后映射

标签 php symfony doctrine-orm doctrine

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

相关文章:

javascript - 我得到了一个带有来自服务器的数据的div,使用ajax,div将被替换为我使用jquery和ajax提交到php路由的表单

php - 插入MYSQL失败

symfony - 如何从 symfony 中的服务类渲染 View ?

php - 路由中的 Symfony2 语言环境

php - 在没有表单/请求的情况下从数据数组填充实体

php - INSERT PHP 语句不起作用

php - 远程连接MySQL

php - DoctrineMongoDBBundle 在 Symfony2 中出现 fatal error

doctrine-orm - Doctrine自动创建所有数据库表?

php - 如何在 Symfony 2 的 Form (Type) 类中获取实体存储库的实例?