在Yii的ORM中定义三列主键

时间:2012-06-19 19:19:24

标签: orm yii

对于这三个表,表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)'),
  );
}

2 个答案:

答案 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属性