我有一个分类页面。
$page = SubCategory::FindOrFail($id);
$products = $page->products;
我正在返回一个视图并显示与该类别相关的所有产品。
我尝试创建过滤器并查看与该类别中返回的产品相关联的所有品牌。
我可以创建一个
$page = SubCategory::FindOrFail($id);
$products = $page->products;
$brands = array();
foreach($products as $p){
foreach($brands as $b){
if(!in_array($p->brand->id,$brands)){
$brands[] = $p->brand->id;
}
}
}
但是我觉得可以有一种更有说服力的方式。
答案 0 :(得分:1)
如果您想要所有属于该产品的品牌的所有ID,您可以这样做:
$brandIds = $products->pluck('brand_id'); // assuming brand_id is the foreign key
如果您还想要品牌对象,可以这样做:
$brands = Brand::whereIn('id', $brandIds)->get();
或急切加载它们:
$products = $page->products()->with('brand')->get();
$brands = $products->pluck('brand');