2009-11-26 6 views
1

다음과 같은 구성표가 있습니다. 내 사이트는 퀴즈 게임이므로 모든 "hasMany"답변을 포함하지만 질문도 "hasOne"정답으로 답변 모델로 표현됩니다. 아직 테스트하지는 않았지만 프로그래머의 본능은 검색된 배열이 일종의 중복이되고 올바른 답변을 나머지 부분에서 분리하지 않는다고 알려줍니다.두 번 모델 연결, CakePHP

제 질문은 모델과 데이터베이스에서 이것을 어떻게 표현할 수 있습니까?이 관계를 표현할 수있는 더 좋은 방법이 있습니까?

답변

1

하거나이 페이지 매우 유용 봐. 하지만 분명히 두 단체의 별명이 다를 수 있습니다.

+0

이것이 내 문제를 실제로 해결 한 것인데, Jimmy Stenke에게 사과합니다.하지만 이미 구현 된 솔루션을 선호합니다. – fixmycode

1

글쎄, 나는 그것을 할 수있는 두 가지 방법을 생각해 낼 수있다.

  1. 의문 hasMany의 답변, 정확한 답변 belongsTo를 질문이 (문제의 정답에 대한 answer_id을 가지고, 그래서 Question(id, answer_id)Answer(id, question_id)과 같을 것이다)

  2. 동안의 깃발을 가지고 그것이 올바른 것인지 아닌지를 나타내는 대답.

나는 개인적인 의견을 더 선택,하지만 난 아마 1 관계형 생각 중 더 정확한 경우에도 2 번에 갈 것이다 하나 생각하지만, 그것은 중복을 줄이고, 당신은 여전히 ​​검색 할 수 있습니다 그 대답을 위해.

물론 질문에 하나 이상의 정답이있을 수있는 경우 옵션 번호 1은 문제가되지 않습니다.

0

다른 경로는 동일한 테이블에 매핑 된 2 개의 모델을 만드는 것입니다. 답변에 정답인지 여부를 나타내는 플래그를 지정하십시오.

올바른 답을 전환하지 않으므로 작성시 플래그를 정확하게 매핑하면 여러 개의 정답을 사용할 수 있습니다. 가중치 시스템을 사용하면 답변의 정확성을 평가할 수도 있습니다.

두 개의 개별 모델을 사용하는 경우 CorrectAnswer 모델이 Answer.correct = true 필드 세트로만 답변을 찾을 수 있도록 관계 또는 모델 자체에 조건을 설정해야합니다. 그런 다음 조건이없는 일반 응답 모델을 만들 수 있습니다. Question 모델에서 완료되면 연관 플래그를 순수하게 사용하여 두 유형을 모두 가져올 수도 있습니다. http://www.charlesgarwood.com/blog/?p=23

0

하는 것이 CakePHP의 관련 포털 cakeqs.org에 문의하십시오)