2017-05-04 5 views
0

モデル間の複数の関係上合計、およびI第2モデルと第3モデルの間の関係を作成して列を合計しました。このように...番号の列がある私は3つのモデル</p> <p>modelOne(多くの関係1)modelTwo第3のモデルでは(多くの関係1)モデルの三</p> <p>を持って

public function getRelationTwoThree() 
     { 
      return $this->hasMany(modelThree::className(), ['modelTwo_id' => 'id']) 
         ->sum('m_1 + m_2'); 
     } 

これは問題ありません。 $ modelTwo-> relationTwoThreeのような2番目のモデルのインスタンスを印刷すると、適切な値が得られます。

relationTwoThreeのすべての値を合計するために、第1モデルと第2モデルの間にrelationOneTwoを作成する方法。私はforeachループでこれを解決できることを知っていますが、私はエレガントで正確な方法が必要です。また、リクエストを遅らせることもありません。私が見つけた

答えて

0

エレガントな解決策は

public function getRelationOneTwo(){ 
    return $this->hasMany(modelTwo::className(), ['modelOne_id' => 'id']) 
         ->joinWith('relationTwoThree') 
         ->sum('m_1 + m_2'); 
} 
joinWith です
関連する問題