2015-04-30 66 views
1

我有三種模型:Person,Feature和PersonFeature。 PersonFeature是一個包含兩個外鍵的聯結表,person_id引用person表中的id,feature_id引用特徵表中的id。Yiii2中的Gii CRUD生成結表關係

我的問題是在Yii2中產生所有相關關係。這些是在三個模式之間的關係

人:

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

最後一個函數(viaTable)是一個多對多的關係,該功能可以(在->with()查詢實例)一起使用,就像任何其他關係的功能。

你不需要爲你的連接表建立模型,除非你想用它來做別的事情。

希望這會有所幫助。