怎么优雅的处理分组每组取几个的hasMany查询
表结构
商品分类 goods_category
id | name |
---|---|
1 | 百货 |
2 | 家居 |
商品 goods
id | goods_category_id | name |
---|---|---|
1 | 1 | 牙刷 |
2 | 1 | 牙膏 |
3 | 1 | 牙线 |
4 | 2 | 凳子 |
5 | 2 | 桌子 |
以下SQL成立
select * from (
select * , row_number() over (partition by goods_category_id) as rn
) t where rn <= 2
可以实现:每个商品分类,分别取两条数据
现在model定义如下:
//商品分类
function goods() {
return $this->hasMany('goods', 'goods_category_id','id');
}
在查询时,以分类查商品
$category = GoodsCategory::with(['goods' => fn($query) $query-???])
有好的方法吗。
还是只能直接从goods查,然后再循环按照分类ID重新拼成数组再输出了
packagist.org/packages/awobaz/comp...
完美