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