简体   繁体   English

在连接多个表中获得计数

[英]get count in joining multiple table

I have 3 tables named user, group and user_has_group. 我有3个表,分别名为user,group和user_has_group。 I am joining these tables using eloquent. 我正在雄辩地加入这些表。 Everything is working just fine, but I need something more. 一切都很好,但我还需要更多。 I need to figure it out that which group has how many users. 我需要弄清楚哪个组有多少用户。 Here the I code I have used: 这是我使用的I代码:

$result = UserHasGroup
                ::join('group', 'user_has_group.group_id', '=', 'group.id')
                ->join('user', 'group.created_by', '=', 'user.id')
                ->where('user_has_group.user_id', '=', $user -> id)
                ->select("user.name as created_by",
                    'group.created_at',
                    'user_has_group.user_id',
                    'group.name as group_name')
                ->getQuery()
                ->get();

and here's the response: 这是响应:

{
    "successful": [
        {
            "created_by": "TUSHAR13",
            "created_at": "2018-05-11 18:04:38",
            "user_id": "5",
            "group_name": "DSGJA"
        },
        {
            "created_by": "TUSHAR13",
            "created_at": "2018-05-11 18:10:17",
            "user_id": "5",
            "group_name": "V76OL"
        },
        {
            "created_by": "TUSHAR13",
            "created_at": "2018-05-10 00:00:00",
            "user_id": "5",
            "group_name": "qwerr"
        }
    ]
}

Now I can't understand where to add groupby and count query. 现在,我不明白在何处添加groupby和count查询。 I need help. 我需要帮助。

$result = UserHasGroup
                ::join('group', 'user_has_group.group_id', '=', 'group.id')
                ->join('user', 'group.created_by', '=', 'user.id')
                ->select("user.name as created_by",
                    'group.created_at',
                    'user_has_group.user_id',
                    'group.name as group_name', DB::raw('count(*) as total'))
                ->groupBy('user_id')
                ->getQuery()
                ->get();

You have to use DB::raw('Count(*)') in the select() then use group by user_id. 您必须在select()使用DB::raw('Count(*)') ,然后使用group by user_id。

hope this helps. 希望这可以帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM