我在类别和产品模型之间存在ManyToMany关系。
产品模型是这样的:
class Product extends Model
{
protected $primaryKey = 'product_id';
public function categories ()
{
return $this->belongsToMany('App\Category', 'category_product', 'product_id', 'cat_id');
}
}
类别模型是:
class Category extends Model
{
protected $primaryKey = 'cat_id';
public function products (){
return $this->belongsToMany('App\Product','category_product','cat_id','product_id');
}
}
现在,我想只获取每个类别的最后4个(例如)产品。为此我写了这个:
$categories = Category::with([
'products' => function($query){
$query->select('products.product_id')->orderBy('created_at','desc')->take(4);
}
])->get();
但这不能正常工作并返回意外的产品数量?
我该怎么做?
答案 0 :(得分:0)
如果您想要每个类别的最后X个产品,您可以尝试以下方式:
Category::with(['products' => function($query) {
$query->orderBy('updated_at','desc')->take(X);
}])->get();
这应返回一个类别集合,其中每个类别的产品数量不应超过所需数量。
希望它有所帮助。