在查询构建器中查询关系和分组依据

Query relation and group by in query builder

在我的查询中出现 sql 错误,我相信我的查询构建器可能格式不正确,但无法弄清楚我做错了什么。

我已经尝试在数据库中直接测试我的查询并且它有效,但是当使用查询生成器进行翻译时它不起作用。

$totalUserForCountry = DB::table('countries')
    ->select('countries.name', DB::raw('COUNT(users.country_id) as total'))
    ->join('users', 'users.country_id', '=', 'countries.id')
    ->groupBy('users.country_id')
    ->get();

我的错误代码是:

SQLSTATE[42000]: Syntax error or access violation: 1055 'db.countries.name' isn't in GROUP BY (SQL: select countries.name, COUNT(users.country_id) as total from countries
inner join users on users.country_id = countries.id group by users.country_id)

Mysql 直接查询数据库:

SELECT ct.name AS CountryName, COUNT(us.country_id) AS NumberOfUsers FROM countries AS ct
        INNER JOIN users AS us
        ON
        us.country_id = ct.id
        GROUP BY us.country_id;

P.S。仅当我将 'strict' 模式禁用为 false

时它才有效

在 sql 查询中使用 group by 子句时,select 子句只能包含您在 group 子句中使用的那些列。

上述问题的sql查询将是:

SELECT ct.name AS CountryName, COUNT(us.country_id) AS NumberOfUsers FROM countries AS ct
    INNER JOIN users AS us
    ON
    us.country_id = ct.id
    GROUP BY us.country_id,ct.name;