0

我通过以下方式通过三个表/活动记录模型定义两个对象(此示例中为 ModelA 和 ModelB)之间的多对多关系:

模型A--<模型A_B>--模型B

其中 ModelA_B 包含 ModelA 和 ModelB 的外键字段。因此,在 ModelA 的代码中,我已添加到关系()函数中:

'modelbs' => array(self::MANY_MANY, 'ModelB', 'tbl_modelb(modela_id,modelb_id)'),

我的问题是我是否仍然需要 Gii 生成的 HAS_MANY 关系来表示与链接表 ModelA_B 的关系,或者这是由上面的 MANY_MANY 隐式声明的?

'modelabs' => array(self::HAS_MANY, 'ModelA_B', 'ModelA_Id'),
4

1 回答 1

2

如果使用MANY_MANY关系,则不需要HAS_MANY为表定义另一个关系ModelA_B

但是你也可以使用这个特性,它会在某个时候through替换关系(如果我没记错的话,可能在 Yii 2.0 中)。MANY_MANY在这种情况下,您将定义 2 个关系:

'mobelabs' => array(self::HAS_MANY, 'ModelA_B', 'ModelA_Id'),
'modelbs' => array(self::HAS_MANY, 'Model_B', 'ModelB_Id', 'through'=>'modelabs'),

现在您可以访问两个相关记录:ModelA_Bvia$modelA->modelabsModelBvia $modelA->modelbs

于 2013-03-07T21:39:52.067 回答