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

黄舟
發布: 2023-03-07 07:40:01
原創
2157 人瀏覽過

這篇文章主要介紹了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中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板