Laravel产品品牌

时间:2017-04-12 14:51:16

标签: php laravel laravel-5 eloquent

我有一个分类页面。

$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;
        }
    }
}

但是我觉得可以有一种更有说服力的方式。

1 个答案:

答案 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');