가장 좋은 방법은 무엇을 만들 tableA HABTM tableA 관계에 대한 cakephp 의 응용 프로그램?
-
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
.그때 나는 전화 테이블 조회 relationships
보 persons_persons
.
나가라고 부르는 필드에서 당신의 관계 테이블 person_id
, relation_id
고 relation_type_id
, 다음에 추가에서 밑줄 relationtypes
테이블의 이름으로 보이게 됩 relation_types
.
내 생각에 이것은 더 많은 의미.
여전히 사용할 수 있습니 hasAndBelongsToMany 연결,사용 자료"가"협회에 의해 제공 cakephp 의(1.2 만)에 액세스하는 추가적인 데이터 HABTM 테이블에 대한 관계 형식입니다.
그러나,나는 유혹을 사용:
Person
hasManyRelation
Relation
belongsToPerson
,Relation
,RelationType
앱에서는 사람의 관계는 묵시적으로 다른 사람의 관계를 그?I.e.는 경우에 당신을 찾는 사람입니다.id=1 당신이 얻을 수 있습니다 모든 그들의 관계,예를 들어,사람입니다.id2,3 및 4.하지만 경우에 당신을 찾는 사람입니다.id2 지 않을 것이다,당신은 자동으로 얻을 사람입니다.id=1,이 있는 경우를 제외하고는 다른 레코드에서 관계 테이블의 대표하는 관계이다.
이를 위해,당신은 설정할 수 있습니다 또 다른 assocation:
Person
hasManyRelation1
와 foreignKeyperson_id
Person
hasManyRelation2
와 foreignKeyrelation_id
Relation
belongsToPerson
,Relation
,RelationType
참고,이를 달성할 수 있습 듀얼과의 관계 HABTM too.