>  기사  >  백엔드 개발  >  3개의 테이블 연관을 구현하기 위한 Yii2 hasOne() 및 hasMany()의 두 가지 방법에 대한 자세한 설명

3개의 테이블 연관을 구현하기 위한 Yii2 hasOne() 및 hasMany()의 두 가지 방법에 대한 자세한 설명

黄舟
黄舟원래의
2017-03-30 09:16:582149검색

이 글에서는 3-테이블 연관을 달성하기 위한 Yii2 hasOne(), hasMany() 메소드(두 가지 메소드)를 주로 소개합니다. 매우 훌륭하고 도움이 필요한 친구들이 참고할 수 있습니다.

배경:

그룹과 사용자의 두 가지 인스턴스가 있습니다.

그룹에는 여러 사용자가 있을 수 있고 사용자는 여러 그룹에 속할 수도 있습니다(다대다 관계)

GroupUserRelation 테이블은 그룹 구성원 간의 관계를 바인딩하는 데 사용됩니다( id Binding)

필드에는 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()의 두 가지 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.