Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 查询生成器中的查询关系和分组依据_Php_Mysql_Laravel 5_Query Builder_Laravel Query Builder - Fatal编程技术网

Php 查询生成器中的查询关系和分组依据

Php 查询生成器中的查询关系和分组依据,php,mysql,laravel-5,query-builder,laravel-query-builder,Php,Mysql,Laravel 5,Query Builder,Laravel Query Builder,在我的查询中得到一个sql错误,我相信可能是我的查询生成器的格式不正确,但我无法找出我做错了什么 Alredy试着在DB中直接测试我的查询,它可以工作,但是当使用查询生成器进行翻译时,它不起作用 $totalUserForCountry = DB::table('countries') ->select('countries.name', DB::raw('COUNT(users.country_id) as total')) ->join('users', 'use

在我的查询中得到一个sql错误,我相信可能是我的查询生成器的格式不正确,但我无法找出我做错了什么

Alredy试着在DB中直接测试我的查询,它可以工作,但是当使用查询生成器进行翻译时,它不起作用

$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]:语法错误或访问冲突:1055“db.countries.name”不在SQL组中:选择countries.name、COUNTusers.country\u id作为来自国家/地区的总计 users.country\u id=countries.id用户组的内部加入用户。country\u 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;

另外,只有当我在sql查询中使用group by子句时将“strict”模式禁用为false时,select子句才有效。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;

你有数据库表前缀吗?这不是怎么回事。。生成的SQL是选择countries.name、COUNTusers.country\u id作为来自国家/地区内部联接的总计。。。,,,,GROUP BY users.country_id上的用户无效ANSI/iSO SQL 92由于您的查询错误,我建议您阅读并提供示例数据和预期结果。。我知道我需要如何像这里的大多数人一样用SQL编写它,但我不能100%确定最简单的方法是如何在Laravel中工作,很可能你需要使用Alredy[sic]尝试在DB中直接测试我的查询[sic],它可以工作-证明它。你不只是添加询问字段吗?->groupBy'users.country\u id'、'countries.name'谢谢Anmol,这是我试图找到的答案类型,我在网上查看了很多例子,说要禁用stric模式,但没有一个解释我为什么要这么做或问题出在哪里。谢谢!