2017-04-12 152 views
1

我有一個類別頁面。Laravel產品品牌

$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

讓我直截了當地說,您希望所有與'$ products'產品鏈接的品牌或只是ID的? –

+0

品牌有單獨的表嗎?有關係嗎?因爲目前我只看到一個空數組。或者是否有品牌名稱的產品專欄?或者品牌標識,請多給點信息 – Christophvh

+0

道歉的傢伙,是的產品與產品表中的brand_id有關的品牌,但我打算擴展上述陣列,以包括品牌名稱等 –

回答

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'); 
+0

謝謝你,我完全忘了採摘方法!這很有幫助,我會利用這一點向前發展。 –