Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.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
Mysql sql不在使用查询生成器laravel的组中_Mysql_Laravel - Fatal编程技术网

Mysql sql不在使用查询生成器laravel的组中

Mysql sql不在使用查询生成器laravel的组中,mysql,laravel,Mysql,Laravel,我想根据投票表中的product_id获取多少数据量。在laravel上,这个查询运行得不好,但当我在mysql中尝试时,我运行得很好,还有其他解决方案吗 这是通过mysql成功执行的查询: select count(product_id) as total, `v`.*, `p`.`name` from `votes` as `v` left join `products` as `p` on `p`.`id` = (select p1.id from products as p1 where


我想根据投票表中的product_id获取多少数据量。在laravel上,这个查询运行得不好,但当我在mysql中尝试时,我运行得很好,还有其他解决方案吗

这是通过mysql成功执行的查询:

select count(product_id) as total, `v`.*, `p`.`name` from `votes` as `v` left join `products` as `p` on `p`.`id` = (select p1.id from products as p1 where v.product_id = p1.id ) group by v.product_id
结果:

这是我使用查询生成器对laravel进行的查询:

$count = DB::table('votes as v')->leftJoin('products as p',function($join){
  $join->on('p.id','=',DB::raw('(select p1.id from products as p1 where v.product_id = p1.id )'));
})->select(DB::raw('count(*) as total'),'v.*','p.name')->groupBy('v.product_id')->get();
dd($count);
我得到了这个错误:

SQLSTATE[42000]:语法错误或访问冲突:1055 “lookbubbledrink.v.id”不在SQL分组中:选择“计数为” 总计,v.,p.投票中的名称为v左加入产品为 p.id上的p=从产品中选择p1.id作为p1,其中v.product\U id =p1.id按v.product\U id分组


我只需要使用group by product_id来根据投票中product_id的数量计算数据量

您在laravel中使用的是严格模式。到目前为止,您可以根据自己的需要进行调整

进入set strict=>false中的config/database.php,就可以开始了

  'mysql' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'strict' => false,
            'engine' => null,
        ],

MySQL较新版本中的配置通过MySQL唯一允许的方式禁用部分组。在这种配置中,所选的所有非聚合字段必须包含在group by子句中。由于您选择的是v.*您需要在group by.on laravel中包含v中的每个字段。此查询不太有效,但当我在mysql中尝试时,我在mysql中运行良好,但在mysql上运行良好,您的查询也不会正常运行。您的查询将生成错误的结果。Laraval很可能为php mysql客户端设置了唯一的“完整的”\u group by sql\u模式活动是否存在其他问题如何生成此类数据@uuerdouse一个已传递的表子查询,以按product_id进行计数和分组,并以唯一可能的方式将结果集和其他数据进行内部联接。在这样的查询中包含v.*甚至并没有多大意义;*在众多可能具有相同产品id的产品中,从哪个v行开始?