我是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