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

黄舟
Release: 2023-03-07 07:40:01
Original
2160 people have browsed it

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
Copy after login

Method 1

public function getGroup()
{
  return $this->hasMany(Group::className(), ['id' => 'group_id'])
     ->viaTable(GroupUserRelation::tableName(), ['user_id' => 'id']);
}
Copy after login

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

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!

Related labels:
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template