我是yii的新手,但是在php和sql方面有很多经验。 我希望有更多有经验的人能够指引我走向正确的方向。我有两个模型,Project和Costs,它们通过project_cost表在多对多关系中相互关联。原因是成本可以在项目之间共享。在project_cost表中有一个额外的列,其中包含多少成本分配给特定项目。从yii中的两个相关模型中检索两列的总和
所以项目模型的关系是这样的,其正在为让所有的细节完美的罚款:
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表有列名百分比。这是很容易构建一个包含一个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关系,但我们不清楚在这种情况下如何应用它们,因为迄今为止我所读到的大部分内容都表明,如果关系中只有两种模式,那么关系的效果最好。
更多信息:在现阶段,我由具有做到这一点公共函数getProjectsum()在模型中具有相应的公共变量projectsum。这意味着我可以像访问这些模型的变量那样访问这些信息:$ model-> projectsum,但是它不会感觉到,因为每次访问模型变量时都会运行sql。 – SiggiSmara