对于这三个表,表XXX有两个列复合PK:
Table XXX:
- XXX_id_1
- XXX_id_2
- name
Table YYY:
- YYY_id
- name
Table XXX_has_YYY:
- X_id
- Y_id
- A_id
如何在Yii的ORM中定义这种关系?
public function relations() {
return array(
'YYY' => array(self::MANY_MANY, 'YYY',
'XXX_has_YYY(XXX_id_1, XXX_id_2, YYY_id)'),
);
}
答案 0 :(得分:2)
Please read the documentation.
注意,对于复合外键,它们可以一起列出,用逗号分隔,也可以以数组格式指定为数组('key1','key2')。如果您需要指定自定义PK-> FK关联,您可以将其定义为数组('fk'=>'pk')。对于复合键,它将是数组('fk_c1'=>'pk_с1','fk_c2'=>'pk_c2')。
此外,第二个参数引用相关对象所在的活动记录类的名称。 因此,你的关系应该是这样的:
'XXX_has_YYY_relation_name' => array(self::MANY_MANY, XXX_has_YYY, array(XXX_id_1, XXX_id_2, YYY_id) ),
答案 1 :(得分:1)
您可以使用CManyManyRelation
的ON
属性