가장 좋은 방법은 무엇을 만들 tableA HABTM tableA 관계에 대한 cakephp 의 응용 프로그램?

StackOverflow https://stackoverflow.com/questions/226805

  •  03-07-2019
  •  | 
  •  

문제

가 있을 만들 필요가 가능하도록 기능을 내에 등록 사용자가 스스로 연결을 다른 사용하여 가정을 만들 수 있습니다.나의 데이터베이스 테이블은 다음과 같이 보일 것입니다:

db.인 -(밥,제인,티미,etc.)

  • id
  • 이름
  • 이메일

db.persons_persons

  • id
  • 사람__id_모
  • person_id_child
  • relationtype_id

db.relationtypes -(배우자,자녀,조카,etc.)

  • id
  • 이름

이러한 구조에 의하면,내가 지정할 수 있는 밥은 배우자의 제인에 persons_persons 테이블.이 기록에서 db.persons_persons 같은 것을 볼 것입니다(의사):

ID | person_parent | person_child | relationtype
1  | Bob           | Jane         | Spouse
2  | Bob           | Timmy        | Child

내가 이것을 실현할 경우 시스템에 문제가 발생할 수 있는 데이터 조각 때문에면 밥과 제인 결혼,다음의 자녀는 하나의 연결 될 수 있습니다.그러나지 않는다.나의 질문에는지 여부를 이 데이터베이스 설정은'가장 정확'에서 사용하기 위해 cakephp 의 응용 프로그램.

도움이 되었습니까?

해결책

첫째,cakephp 의 것입니다 automatigally 활 a people 으로 테이블 people 컨트롤러 person 모델,그래서 당신은 도움을 요청할 필요가 없다 persons.그때 나는 전화 테이블 조회 relationshipspersons_persons.

나가라고 부르는 필드에서 당신의 관계 테이블 person_id, relation_idrelation_type_id, 다음에 추가에서 밑줄 relationtypes 테이블의 이름으로 보이게 됩 relation_types.

내 생각에 이것은 더 많은 의미.

여전히 사용할 수 있습니 hasAndBelongsToMany 연결,사용 자료""협회에 의해 제공 cakephp 의(1.2 만)에 액세스하는 추가적인 데이터 HABTM 테이블에 대한 관계 형식입니다.

그러나,나는 유혹을 사용:

  • Person hasMany Relation
  • Relation belongsTo Person, Relation, RelationType

앱에서는 사람의 관계는 묵시적으로 다른 사람의 관계를 그?I.e.는 경우에 당신을 찾는 사람입니다.id=1 당신이 얻을 수 있습니다 모든 그들의 관계,예를 들어,사람입니다.id2,3 및 4.하지만 경우에 당신을 찾는 사람입니다.id2 지 않을 것이다,당신은 자동으로 얻을 사람입니다.id=1,이 있는 경우를 제외하고는 다른 레코드에서 관계 테이블의 대표하는 관계이다.

이를 위해,당신은 설정할 수 있습니다 또 다른 assocation:

  • Person hasMany Relation1 와 foreignKey person_id
  • Person hasMany Relation2 와 foreignKey relation_id
  • Relation belongsTo Person, Relation, RelationType

참고,이를 달성할 수 있습 듀얼과의 관계 HABTM too.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top