Yii2中的Gii CRUD生成连接表关系

时间:2015-04-30 06:46:05

标签: php mysql yii2

我有三个模型:Person,Feature和PersonFeature。 PersonFeature是一个包含两个外键的联结表,person_id引用person表中的id,feature_id引用功能表中的id。

我的问题是Yii2中的Gii是否产生了所有相关关系。这些是三个模型中每个模型的关系

人:

public function getPersonfeatures()
{
    return $this->hasMany(Personfeature::className(), ['personid' => 'id']);
}

特点:

public function getPersonfeatures()
{
    return $this->hasMany(Personfeature::className(), ['featureid' => 'id']);
}

PersonFeature:

public function getPerson()
{
    return $this->hasOne(Person::className(), ['id' => 'personid']);
}
public function getFeature()
{
    return $this->hasOne(Feature::className(), ['id' => 'featureid']);
}

但是当我浏览其他帖子时,我发现存在“viaTable”操作,例如:

public function getPerson() {
return $this->hasMany(Person::className(), ['id' => 'personid'])
    ->viaTable('personfeature', ['featureid' => 'id']);}

基本上我的问题是,Yii应该为我生成这个吗?或者我可以手动添加吗?

干杯

1 个答案:

答案 0 :(得分:0)

最后一个函数(使用viaTable)是多对多关系,该函数可以像任何其他关系函数一样使用(例如在->with()查询中)。

您不需要联接表的模型,除非您想将其用于其他内容。

希望这有帮助。