私は yii を使ったのはかなり新しいですが、php と sql の経験は豊富です。yii の経験が豊富な人が私を正しい方向に向けてくれることを願っています。Project と Costs という 2 つのモデルがあり、project_cost テーブルを介して多対多の関係で相互に関連付けられています。その理由は、コストをプロジェクト間で共有できるからです。project_cost テーブルには、特定のプロジェクトに割り当てられたコストを含む追加の列があります。
したがって、Project モデルの関係は次のようになり、すべての詳細を取得するために完全に正常に機能しています。
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 関係について知っていますが、これまでに読んだほとんどのことは、関係に 2 つのモデルしかない場合に関係が最もうまく機能することを示しているため、この場合にそれらをどのように適用できるかについては不明です。