2016-11-07 57 views
0

Laravel雄辯雙重關係,我有三個型號,下面的數據:與條件

  1. 產品

    • ID
    • 描述
    • ID
    • 顏色
    • 私人
    • PRODUCT_ID
  2. 圖片

    • 網址
    • VA riant_id

所以關係是:

  • 產品的hasMany變種
  • 變的hasMany圖片

我需要讓所有的變體的集合,包括父產品,因爲我也需要它的名稱和包括與變體相關的圖像,條件(在變體) - > where('type','OPT')和 - >哪裏('私人',假)。

我試圖用原始SQL查詢來做到這一點,但我需要循環訪問刀片模板中的Variant圖像,所以我需要一個集合。我怎樣才能把所有的東西放在一起而不用跑太多的查詢

回答

1

確保你有你的Variant模型中,這些關係:

public function product() 
{ 
    return $this->belongsTo(Product::class); 
} 

public function images() 
{ 
    return $this->hasMany(Image::class); 
} 

然後,你可以這樣做:

$collection = Variant::with('product', 'images') 
    ->where('type', 'OPT') 
    ->where('private', false) 
    ->get();