我想根据表中的产品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
. name
从 votes
作为 v
左连接 products
作为 p
在 p
. id
=(从产品中选择p1.id作为p1,其中v.product_id=p1.id)分组依据 v
. product_id
我只能使用groupbyproduct\ id来计算投票中基于product\ id的数据量。
1条答案
按热度按时间eivgtgni1#
你在拉维尔使用严格模式。到那时,你可以根据自己的需要调整它。
一定要去
config/database.php
成套strict=>false
你可以走了。