2016-09-30 2 views
0

モジュールでパックされたサービスのモデルを作成しました。各モジュールには価格があります。複数のモジュールがそのサービスの価格を作成します。価格親からのラーベル関係

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

belongsToMany

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

各モジュールのリンクとモジュールにサービスをリンクservice_moduleテーブルを使用して

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

。問題は、私は醜いループを持つパッチと要求ごとの15個の以上のクエリを燃焼を作成したので、私は、各サービスためモジュール価格を->sum()ことができるように作成する必要がありますどのような関係である

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

答えて

1
あなたが使用することができます

Eager Loadingを使用してservicesクエリとの関係をロードし、15の追加クエリを1つの追加クエリに変換します。

リンクされたドキュメントのコード例は、開始するのに十分なはずです。