简体   繁体   中英

Gii CRUD in Yii2 Generating Junction Table Relations

I have three models: Person, Feature and PersonFeature. PersonFeature is a junction table with two foreign keys, person_id referencing id in the person table and feature_id referencing id in the feature table.

My question is does Gii in Yii2 generate all the relevant relations. These are the relation in each of the three models

Person:

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

Feature:

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']);
}

But when I browse other posts I see that there exists a 'viaTable' operation for example:

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

So basically my question is, is Yii supposed to generate this for me? Or can I manually add it in?

Cheers

The last function (with viaTable) is a many to many relationship, that function can be used just as any other relational function (for instance in a ->with() query).

You don't need a model for your join table, unless you want to use it for something else.

Hope this helps.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM