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

anauzrmj  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(425)


我想根据表中的产品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'不在group by中(sql:select count()as total, v ., p . namevotes 作为 v 左连接 products 作为 pp . id =(从产品中选择p1.id作为p1,其中v.product_id=p1.id)分组依据 v . product_id 我只能使用groupbyproduct\ id来计算投票中基于product\ id的数据量。

eivgtgni

eivgtgni1#

你在拉维尔使用严格模式。到那时,你可以根据自己的需要调整它。
一定要去 config/database.php 成套 strict=>false 你可以走了。

'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,
        ],

相关问题