Home  >  Article  >  Backend Development  >  Detailed explanation of the two methods of Yii2 hasOne() and hasMany() to implement three-table association

Detailed explanation of the two methods of Yii2 hasOne() and hasMany() to implement three-table association

黄舟
黄舟Original
2017-03-30 09:16:582149browse

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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn