首頁 >後端開發 >php教程 >詳解Yii2 hasOne(), hasMany()實現三表關聯的兩種方法

詳解Yii2 hasOne(), hasMany()實現三表關聯的兩種方法

黄舟
黄舟原創
2017-03-30 09:16:582195瀏覽

這篇文章主要介紹了Yii2 hasOne(), hasMany() 實現三表關聯的方法(兩種),非常不錯,具有參考借鑒價值,需要的朋友可以參考下

#背景:

現有group (群組)和user (使用者) 兩種實例。

一個group 中可以擁有多個user,一個user 也可以屬於有多個group (多對多關係)

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

以上是詳解Yii2 hasOne(), hasMany()實現三表關聯的兩種方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn