代码之家  ›  专栏  ›  技术社区  ›  Adam

拉威尔集团&以雄辩的关系来计数

  •  0
  • Adam  · 技术社区  · 6 年前

    我知道以前有人问过这个问题: Laravel Grouping by Eloquent Relationship

    我的问题

    A 有多个 项目 . items 每个用户都有一个 item_type 一个问题?


    像这样的问题

    User::with(['items' => function($q){
      $q->groupBy('type');
    });
    

    返回此错误:

    不在GROUP BY子句中,并且包含未聚合列'项目id' 在功能上不依赖于GROUPBY子句中的列; 这与sql\u mode=only\u full\u group by不兼容

    我尝试通过以下查询修复此错误:

    User::with(['items' => function($q){
        $q->select('type', \DB::raw('count(*) as total'))
              ->groupBy('type');
    });
    

    users 每个用户的 item 集合为空。

    在查询中是否可以按关系分组?

    1 回复  |  直到 6 年前
        1
  •  3
  •   Mihir Bhende    6 年前

    您使用$q作为闭包参数,并且在内部使用$query。有时我也会遇到这样的问题:我必须在关系查询闭包中传递外键才能得到结果:

    <?php 
    
    $userWithItems = User::with(['items' => function($q){
        $q->select('type', \DB::raw('count(*) as total'), 'user_id')
              ->groupBy('type');
    });
    

    only_full_group_by