对模型之间的多重关系求和
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');
}
我有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');
}