Yii模型 - MANY_MANY关系 - 我还需要一个HAS_MANY吗?

时间:2013-03-07 12:25:10

标签: yii

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

ModelA - < ModelA_B> - ModelB

ModelA_B包含ModelA和ModelB的外键字段。所以在ModelA的代码中,我已经添加到 relations()函数:

'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'),

1 个答案:

答案 0 :(得分:2)

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

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

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

现在您可以访问这两个相关记录:ModelA_B来自$modelA->modelabsModelB来自$modelA->modelbs