我有2个表,产品和类别。产品属于不同的类别,并且类别以树结构形成,允许父类别和子类别关系。因此,给定一个特定类别,我应该如何编写查询以获取属于此类别及其所有子类别的分页产品?
我忘了提到在我的设置中,产品和类别有很多很多关系,有一个名为product_catrgory的数据透视表。
答案 0 :(得分:1)
$ids = $category->children()->lists('id');
$ids[] = $category->id;
$products = Product::whereIn('category_id', $ids)->paginate(20);
答案 1 :(得分:0)
也许还有其他更好的方法,但你可以这样做:
$ids = [];
$ids[] = $category->id;
foreach ($category->children as $child) {
$ids[] = $child->id;
}
$products = Product::whereIn('cat_id', $ids)->paginate(15);
答案 2 :(得分:0)
在我看来,最简单的方法是先递归获取类别ID及其所有子类别ID。并使用whereIn(类别ID数组)查询数据库以获取所有产品。我不认为你可以在一个查询中做到这一点。