前提需求
// 商品分类表模型
ProductCategoryModel
字段:id, category_name
// 商品表模型
ProductModel
字段:id, category_id, product_name, sales
分类与商品是一对多关系
-- ProductCategoryModel
public function products()
{
return $this->hasMany(ProductModel::class, 'category_id', 'id');
}
现查询所有的商品分类和各分类下的3个销量最高的商品
错误写法
ProductCategoryModel::query()
->with(['products' => function($query) {
$query->orderByDesc('sales')->limit(3);
}])
->get()->toArray();
正确写法
ProductCategoryModel::query()
->with(['products' => function($query) {
$query->orderByDesc('sales');
}])
->get()
->map(function($item) {
$item->setRelation('products', $item->products->take(3));
return $item;
})
->toArray();