这是我的产品表:
这是我的类别表:
我想获取属于指定类别及其子级的所有产品(按类别ID)。
Products表中的category_id始终引用子类别
我尝试了 HasManyThrough ,但我无法对检索到的产品进行分页。
答案 0 :(得分:0)
首先获取所有类别并循环遍历并获取属于该类别的所有产品,并且您可以限制每个类别的产品数量,假设为10.
之后,如果用于前端,则使用ajax,并且对于API直接传递偏移量,为特定类别赋予特定量的偏移量。
希望这有帮助。
答案 1 :(得分:0)
这适用于一个级别的子类别:
Product::whereHas('category', function($q) use($categoryId) {
$q->where('category', $categoryId)
->orWhere('parent_id', $categoryId);
})
->get();
category
是belongsTo
关系。
答案 2 :(得分:0)
//In Products Controller
$products= DB::table('products')->select('products.*')
->join('categories', 'categories.id' ,'=', 'products.category_id')
->get();
//or
//here is using model name also
use App\Products;
$products= Products::select('products.*')
->join('categories', 'categories.id' ,'=', 'products.category_id')
->get();
答案 3 :(得分:0)
首先在Category
模型中编写以下方法:
public function children(){
return $this->hasMany(Category::class, 'parent_id');
}
public function parent(){
return $this->belongsTo(Category::class, 'parent_id');
}
public function products(){
return $this->hasMany(Product::class, 'category_id');
}
并在Product
模型:
public function category(){
return $this->belongsTo(Category::class, 'category_id');
}
现在在控制器中:
$res = Category::with([
'products',
'children.products'
])->find($your_category_id);
使用dd($res)
并查看结果。希望它有效