我是 yii 的新手,但对 php 和 sql 有丰富的经验。我希望对 yii 更有经验的人可以为我指明正确的方向。我有两个模型,项目和成本,它们通过 project_cost 表以多对多关系相互关联。这样做的原因是成本可以在项目之间分摊。在 project_cost 表中有一个附加列,其中包含分配给特定项目的成本的多少。
所以项目模型关系看起来像这样,它非常适合获取所有细节:
class Project extends CActiveRecord
{
/**
* @return array relational rules.
*/
public function relations()
{
return array(
'projectcost' => array(self::HAS_MANY, 'ProjectCost', 'project_id'),
'cost' => array(self::HAS_MANY, 'Cost', array('cost_id'=>'id'),'through'=>'projectcost'),
//i.e. a many to many relation of cost through the projectcost model
);
}
...
}
在成本模型中有一个名为 Value 的列,在 project_cost 表中有一个名为 Percent 的列。构造一个包含 sql 查询的函数很容易,它可以为我提供项目成本的总和,如下所示:
select sum(project_cost.Percent*cost.Value)
from project_cost join cost on project_cost.cost_id=cost.id
where project_cost.project_id=1
但是有没有办法通过 yii 中的关系来做同样的事情?我知道 STAT 关系,但不清楚如何在这种情况下应用它们,因为到目前为止我所阅读的大部分内容都表明,如果关系中只有两个模型,则关系效果最好。