Home > Article > Backend Development > Detailed explanation of the two methods of Yii2 hasOne() and hasMany() to implement three-table association
This article mainly introduces Yii2 hasOne(), hasMany() methods (two methods) to achieve three-table association. It is very good and has reference value. Friends in need can refer to it
Background:
There are two instances of group and user.
A group can have multiple users, and a user can also belong to multiple groups (many-to-many relationship)
The GroupUserRelation table is used to bind the relationship between group members (using id Binding)
The fields have id, group_id, user_id
The existing User table needs to obtain the information of all user groups it belongs to, and needs to use hasMany() Multi-table association.
User.id => GroupUserRelation.user_id GroupUserRelation.group_id => Group.id
Method 1
public function getGroup() { return $this->hasMany(Group::className(), ['id' => 'group_id']) ->viaTable(GroupUserRelation::tableName(), ['user_id' => 'id']); }
Method 2
public function getGroup() { return $this->hasMany(Group::className(), ['id' => 'group_id']) ->viaTable('groupUserRelation'); } public function getGroupUserRelation() { return $this->hasMany(GroupUserRelation::tableName(), ['user_id' => 'id']); }
The above is the detailed content of Detailed explanation of the two methods of Yii2 hasOne() and hasMany() to implement three-table association. For more information, please follow other related articles on the PHP Chinese website!