对模型之间的多重关系求和

Sum on the multiple relations between models

我有3个模型

模型一(一对多关系)模型二(一对多关系)模型三

在第三个模型中有带数字的列,我在第二个和第三个模型之间创建了关系以对列求和。像这样...

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

没关系。当我打印第二个模型实例时 $modelTwo->relationTwoThree 我得到了正确的值。

如何在第一个和第二个模型之间创建 relationOneTwo,以对 relationTwoThree 的所有值求和。我知道我可以用 foreach 循环解决这个问题,但我想要优雅且更正确的方法。也不要减慢请求速度。

我找到的优雅解决方案是joinWith

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