LaravelORM 中的 withSum , withAvg, withMax,withMin 的实现
laravelORM 中的 withCount 可以统计相关联数据的总数 ,
LaravelORM 写法:
Orm::withCount(['relation'])->get();
解析成SQL :
select `a`.*, (select count(*) from `relation` where `a`.`id` = `relation`.`aid`) as `relation_count` from `a`;
当需要统计关联的 某个字段 sum 时,可以这样写:
Orm::withCount(['relation as relation_sum' =>function($query){
$query->select(DB::raw("sum(amount) as relationsum"));
}])
解析成SQL:
select `a`.*, (select sum(amount) from `relation` where `a`.`id` = `relation`.`aid`) as `relation_sum_count` from `a` ;
其他的avg , max , min也可以通过withCount实现
本帖已被设为精华帖!
本帖由系统于 5年前 自动加精
新技能get :smile:
666
:+1:
厉害厉害
多态一对一貌似不行
:+1:
我觉得你可以贴个二维码,接收捐赠了,这个功能太赞了
前些日子,把你这篇文章推荐给 laravel 官方,没通过的 pr 现在官方已经支持了
laravel 8.13 更新
@tu6ge-php 感谢提出官方解决方案