我有三个模型: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应该为我生成这个吗?或者我可以手动添加吗?
干杯
答案 0 :(得分:0)
最后一个函数(使用viaTable)是多对多关系,该函数可以像任何其他关系函数一样使用(例如在->with()
查询中)。
您不需要联接表的模型,除非您想将其用于其他内容。
希望这有帮助。