0
点赞
收藏
分享

微信扫一扫

laravel sql 查询字表的个数超过指定个数查询

zibianqu 2023-02-15 阅读 83


子表:

​goods_sku_log​

主表

​goods_sku​

查询 有两条​​goods_sku_log​​记录以上的数据

laravel 实现

一种count(*)实现方式 ​​(数据忽略)​

$visits = DB::table('visits')
->select('ip_address',DB::raw('count(*) as total'))
->where('timestamp', '>=',\Carbon\Carbon::now()->startOfDay())
->groupBy('ip_address')
->orderBy('total', 'desc')
->get();

优雅一点的实现方案

$goodsSku = GoodsSku::whereHas('goods_sku_log',function ($query){
$query->havingRaw('count(*) >= 1')->groupBy('id');
})
->with('goods_sku_log')
->orderBy('created_at', 'desc')
->limit(5)
->get();

​having​​ 通常用在 groupBy

实现的SQL:

select
*
from
`goods_sku`
where
exists (
select
*
from
`goods_sku_log`
where
`goods_sku`.`id` = `goods_sku_log`.`goods_sku_id`
group by
`id`
having
count(*) >= 1
)
and `goods_sku`.`deleted_at` is null
order by
`created_at` desc
limit
5

参考:​​stackoverflow​​



举报

相关推荐

0 条评论