3 つのテーブルの関連付けを実装する Yii2 hasOne() と hasMany() の 2 つのメソッドの詳細な説明

黄舟
リリース: 2023-03-07 07:40:01
オリジナル
2157 人が閲覧しました

この記事では、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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート