2010-07-10 5 views
1

내 앱에는 다 대다 관계가있는 2 개의 테이블이 있습니다. 이것들이 테이블 학생과 테이블 코스라고 말합시다. 각 과정에는 많은 학생들이 참여할 수 있으며 각 학생은 또한 많은 과정에 등록 할 수 있습니다.cakephp의 명명 테이블

이제 cakephp에 따라 courses_students라는 연관 테이블을 만들고 싶습니다.

그러나 여러 가지 이유로 새로운 테이블의 이름을 등록으로 지정하고 싶습니다. 나는이 테이블의 프라이 머리 키를 많은 장소에서 사용하고 있으며, courses_student_id보다는 enrollment_id를 외래 키로 사용하려고합니다.

이렇게하면 많은 수동 코딩이 필요하거나 여전히 cakephp의 automagic을 사용할 수 있습니까? 이 문제와 관련된 모범 사례/지침에 대한 지침이 있습니까?

감사

답변

4

짧은 대답은 '예'입니다. 결합 테이블이 2 개의 외래 키와 함께 고유 한 ID를 가지면 Cake는 여전히 hasAndBelongsToMany 매직을 작동시킬 수 있습니다.

YAGNI의 위험에 노출 될 가능성이있는 것은 hasAndBelongsToMany 연관을 두 가지로 사용하여 hasMany 관계를 유지하는 것입니다. 자체 등록으로 각 등록에 대한 액세스를 이미 계획하고 있으므로 특정 시점에 자체 등록 정보 (예 : enrollment_date, course_evaluation 등)가있을 수 있으며 별도의 모델로 모두 처리해야 할 수도 있습니다. 물론 Enrollment 모델은 belongsToStudentCourse 모델입니다.

분명히 "나는 무엇을 할 것인가"시나리오는 원치 않았지만 나는 케익 마술의 건강한 복용량과 약간의 확장 성을 제공 할 수있는 약간 다른 방향을 제안 할 것이라고 생각했다. 당신은 이미하고있는 것을 기반으로합니다.

+1

"내가 무엇을 할 것인가"시나리오는 사실 "정보"이외에 "지혜"를 포함하기 때문에 사실 "짧은 답변"보다 훨씬 높게 평가됩니다. 나는 해결책을 시도한 다음 되돌릴 것이다. 그리고 enrollments 테이블 자체의 속성을 갖게된다는 관찰에 주목하십시오. :-) – Vinayak

+0

Brilliant 대답 Rob Wilkerson. 이것이 내가 HABTM 관계 구현을 주장하는 이유에 대해 두 번 생각하게 만들었습니다. 등록은 자신의 속성을 가지고 있습니다 (이 진술은 모든 의문점을 제거했습니다). 답변 해 주셔서 감사합니다. :-) –

+0

도움이 된 것을 기쁘게 생각합니다. 내 자신의 접근 방식은 조인 테이블이 간단한 조인 테이블 (두 개의 열, 이중 기본 키, 두 키가 외래 키임)이되는 즉시 중단 한 다음 자신의 모델로 처리하고 HABTM 노력을 버릴 시간입니다. –

0

내가 전에 이것에 대해 생각 적이 있지만, 어쩌면 당신은 기본 키 enrollment_id의 이름을 지정하고 테이블 이름 courses_students을 유지하고 구울 수 있습니다. 기본 키와 이드의 ID를 다음과 같이 설정할 수 있다고 생각합니다.

var $id = 'enrollment_id'; 
var $primaryKey = 'enrollment_id' 

희망이 있습니다.