Laravel 带有搜索数据和计数的数据库查询中的问题

issue in Laravel DB query with search data and count

我想在用户 table 中搜索用户名,并且我在成员 table 中有 count 个成员。而小组的table是主要的table。 members table 在组成员的多个条目中。但我不能在一个查询中同时搜索用户名和成员数。我的查询如下

$group = Group::select('groups.*', DB::raw('count(group_id) as totalMembers'), 'users.name as ownerName', 'users.id as userId')
            ->leftJoin('members', 'members.group_id', '=', 'groups.id')
            ->leftJoin('users', 'users.id', '=', 'members.user_id')
            ->where('members.memberStatus', 'Joined')
            ->where(function ($query) use ($request) {
                $query->where('name', "like", "%" . $request->searchText . "%");
                $query->orWhere('groupName', "like", "%" . $request->searchText . "%");            
            })
            ->groupBy('groups.id')
            ->get();

在此查询中,成员计数不正确,但搜索正常 我的 table 结构如下

用户table enter image description here

成员table enter image description here

组tables enter image description here

试试这个子查询

$group = Group::select(['groups.*', 
                        'users.name as ownerName', 
                        'users.id as userId',
                        \DB::raw("(SELECT count(members.group_id) FROM members
                            WHERE members.group_id = groups.id
                            GROUP BY members.group_id) as totalMembers")])
            ->leftJoin('members', 'members.group_id', '=', 'groups.id')
            ->leftJoin('users', 'users.id', '=', 'members.user_id')
            ->where('members.memberStatus', 'Joined')
            ->where(function ($query) use ($request) {
                $query->where('name', "like", "%" . $request->searchText . "%");
                $query->orWhere('groupName', "like", "%" . $request->searchText . "%");            
            })
            ->groupBy('groups.id')
            ->get();

DB::raw('count(members.group_id) as totalMembers