この記事では、3 つのテーブルの関連付けを実装するための Yii2 hasOne()、hasMany() メソッド (2 つのメソッド) を主に紹介します。これは非常に優れており、必要な友人は参照できます。
背景:
。グループとユーザーの 2 つのインスタンスがあります。
グループには複数のユーザーを含めることができ、ユーザーは複数のグループに属することもできます (多対多の関係)
GroupUserRelation テーブルは、グループ メンバー間の関係をバインドするために使用されます (ID バインディングを使用)
フィールドは次のとおりですid、group_id、user_id
既存のUserテーブルの場合、それが属するすべてのユーザーグループの情報を取得する必要があり、複数テーブルの関連付けにはhasMany()を使用する必要があります。
User.id => GroupUserRelation.user_id GroupUserRelation.group_id => Group.id
方法 1
public function getGroup() { return $this->hasMany(Group::className(), ['id' => 'group_id']) ->viaTable(GroupUserRelation::tableName(), ['user_id' => 'id']); }
方法 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']); }
以上が3 つのテーブルの関連付けを実装する Yii2 hasOne() と hasMany() の 2 つのメソッドの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。