2016-09-30 107 views
0

我創建了一個模塊,這些模塊包含模塊並且每個模塊都有價格。多個模塊爲該服務創建價格。通過父母的Laravel關係

- Service #1 
-- Module 1 ($20) 
-- Module 2 ($40) 

使用belongsToMany

class Services extends Model 
{ 
    public function modules() 
    { 
     return $this->belongsToMany('App\Services\Modules'); 
     ... 

每個模塊鏈接到一個價格

class Modules extends Model 
{ 
    public function price() 
    { 
     return $this->hasOne('App\Services\Pricing', 'product')->where('type', 'module'); 
     ... 

service_module表到模塊的鏈接服務。問題是什麼樣的關係,我應該創造能夠->sum()模塊價格爲每服務因爲我創建了一個難看的補丁與循環和燃燒的每個請求的15多個查詢

$prices = []; 
foreach ($services->modules as $modules) 
    $prices[] = $modules ->price['month']; 
$price = number_format(collect($prices)->sum(), 2, '.', ''); 

回答

1

您可以使用Eager Loading加載您的關係以及services查詢將這15個額外的查詢轉換爲一個額外的查詢。

鏈接文檔中的代碼示例應該足以讓您開始。