QueryBuilder / Doctrine选择加入分组依据

狗狗

所以最近我一直在思考,但由于我缺乏对doctrine2和symfony查询生成器的开发,因此无法解决该问题。

我有2个表格:目标:id,user_id,target_value ...储蓄:id,goal_id,金额

而且我需要从目标中进行选择(表中的所有信息均来自目标表,除了我需要从每个目标的储蓄表中得出SUM(金额),以便我可以向用户显示他为目标而保存)

这是MySQL查询:

    select 

    admin_goals.created,
    admin_goals.description,
    admin_goals.goal_date,
    admin_goals.value,
    admin_goals.budget_categ,
    sum(admin_savings.value) 

    from admin_goals 
inner join admin_savings on admin_savings.goal_id=admin_goals.id 
    where admin_goals.user_id=1 
    group by admin_goals.id

它返回了我想要的内容,但我不知道如何使用学说或查询生成器来实现它,您能以两种方式向我展示一个示例吗?在此处输入图片说明我非常感谢!在此处输入图片说明

史蒂文尔

我将假设您仅需要此字段,而不需要您的AdminGoals实体。在你的AdminGoalsRepository,你可以这样做:

public function getGoalsByUser(User $user) 
{
    $qb = $this->createQueryBuilder('goal');
    $qb->select('SUM(savings.value) AS savings_value')
       ->addSelect('goal.created')
       ->addSelect('goal.description')
       ->addSelect('goal.goalDate')
       ->addSelect('goal.value')
       ->addSelect('goal.budgetCat') //is this an entity? it will be just an ID
       ->join('goal.adminSavings', 'savings', Join::WITH))
       ->where($qb->expr()->eq('goal.user', ':user'))
       ->groupBy('goal.id')
       ->setParameter('user', $user);

    return $qb->getQuery()->getScalarResult();
}

请记住,返回对象将是一个行数组,每一行都是一个具有如上述映射之类的键的关联数组。

编辑

更新问题后,我将更改建议的功能,但是如果其他人希望看到不同之处,请离开上面的示例。

首先,由于这是AdminSavings之间的单向ManyToOne AdminGoals,因此自定义查询应位于AdminSavingsRepository与上面不同)。同样,由于您想要一个聚合字段,这将“破坏”您的某些数据获取。当您不只是渲染模板时,尝试保持尽可能多的OOP。

public function getSavingsByUser(User $user)
{
    $qb = $this->createQueryBuilder('savings');
    //now we can use the expr() function
    $qb->select('SUM(savings.value) AS savings_value')
       ->addSelect('goal.created')
       ->addSelect('goal.description')
       ->addSelect('goal.goalDate')
       ->addSelect('goal.value')
       ->addSelect('goal.budgetCat') //this will be just an ID
       ->join('savings.goal', 'goal', Join::WITH))
       ->where($qb->expr()->eq('goal.user', ':user'))
       ->groupBy('goal.id')
       ->setParameter('user', $user);

       return $qb->getQuery()->getScalarResult();
}

奖金

public function FooAction($args) 
{
    $em = $this->getDoctrine()->getManager();
    $user = $this->getUser();
    //check if user is User etc depends on your config
    ...

    $savings = $em->getRepository('AcmeBundle:AdminSavings')->getSavingsByUser($user);

    foreach($savings as $row) {
        $savings = $row['savings_value'];
        $goalId =  $row['id'];  
        $goalCreated = $row['created'];
        [...]
    }
    [...]
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从Doctrine QueryBuilder中的数组中选择列

来自分类Dev

按几列排序-Doctrine QueryBuilder

来自分类Dev

使用Doctrine QueryBuilder忽略参数

来自分类Dev

SQL 到 Doctrine 的 QueryBuilder 转换

来自分类Dev

如何使用Doctrine QueryBuilder选择所有列?

来自分类Dev

Yii2 QueryBuilder更新并加入

来自分类Dev

Doctrine QueryBuilder - Exclude articles linked to specific themes

来自分类Dev

类型为“ Doctrine \ ORM \ QueryBuilder”的预期参数

来自分类Dev

使用Doctrine querybuilder正确转义LIKE查询

来自分类Dev

如何使用QueryBuilder和Doctrine数组类型?

来自分类Dev

使用laravel querybuilder处理分组项目

来自分类Dev

检查列是否已分组(QueryBuilder)

来自分类Dev

教义QueryBuilder-多个选择字段

来自分类Dev

TypeORM不要选择从queryBuilder提供任何数据

来自分类Dev

Cassandra querybuilder选择多列聚合函数

来自分类Dev

可以在Doctrine的QueryBuilder中进行参数化选择和选择吗?

来自分类Dev

使用getter方法无法访问通过querybuilder选择的Doctrine 2特定字段

来自分类Dev

使用Doctrine QueryBuilder从Select语句获得的内部联接结果

来自分类Dev

Symfony2-Doctrine2 QueryBuilder在ManyToMany字段中

来自分类Dev

使用QueryBuilder的Symfony2 / Doctrine2 innerJoin

来自分类Dev

如何在doctrine2 queryBuilder中实现ON(... OR ...)mysql查询

来自分类Dev

如何将我的SQL语句转换为Doctrine QueryBuilder?

来自分类Dev

为什么Doctrine QueryBuilder会破坏我的查询?

来自分类Dev

Symfony2-Doctrine2 QueryBuilder在ManyToMany字段中

来自分类Dev

Doctrine 2 ORM-在oneToMany关系中搜索(QueryBuilder)

来自分类Dev

使用 Doctrine QueryBuilder 时变量未定义

来自分类Dev

从 Doctrine ORM QueryBuilder 中实体的两列获取数据

来自分类Dev

如何在mongodb querybuilder中“分组”字段“计数”?

来自分类Dev

Symony QueryBuilder

Related 相关文章

  1. 1

    从Doctrine QueryBuilder中的数组中选择列

  2. 2

    按几列排序-Doctrine QueryBuilder

  3. 3

    使用Doctrine QueryBuilder忽略参数

  4. 4

    SQL 到 Doctrine 的 QueryBuilder 转换

  5. 5

    如何使用Doctrine QueryBuilder选择所有列?

  6. 6

    Yii2 QueryBuilder更新并加入

  7. 7

    Doctrine QueryBuilder - Exclude articles linked to specific themes

  8. 8

    类型为“ Doctrine \ ORM \ QueryBuilder”的预期参数

  9. 9

    使用Doctrine querybuilder正确转义LIKE查询

  10. 10

    如何使用QueryBuilder和Doctrine数组类型?

  11. 11

    使用laravel querybuilder处理分组项目

  12. 12

    检查列是否已分组(QueryBuilder)

  13. 13

    教义QueryBuilder-多个选择字段

  14. 14

    TypeORM不要选择从queryBuilder提供任何数据

  15. 15

    Cassandra querybuilder选择多列聚合函数

  16. 16

    可以在Doctrine的QueryBuilder中进行参数化选择和选择吗?

  17. 17

    使用getter方法无法访问通过querybuilder选择的Doctrine 2特定字段

  18. 18

    使用Doctrine QueryBuilder从Select语句获得的内部联接结果

  19. 19

    Symfony2-Doctrine2 QueryBuilder在ManyToMany字段中

  20. 20

    使用QueryBuilder的Symfony2 / Doctrine2 innerJoin

  21. 21

    如何在doctrine2 queryBuilder中实现ON(... OR ...)mysql查询

  22. 22

    如何将我的SQL语句转换为Doctrine QueryBuilder?

  23. 23

    为什么Doctrine QueryBuilder会破坏我的查询?

  24. 24

    Symfony2-Doctrine2 QueryBuilder在ManyToMany字段中

  25. 25

    Doctrine 2 ORM-在oneToMany关系中搜索(QueryBuilder)

  26. 26

    使用 Doctrine QueryBuilder 时变量未定义

  27. 27

    从 Doctrine ORM QueryBuilder 中实体的两列获取数据

  28. 28

    如何在mongodb querybuilder中“分组”字段“计数”?

  29. 29

    Symony QueryBuilder

热门标签

归档