2011-01-11 2 views
2

첫째 : 내가 생각을 잘못 날 수정하시기 바랍니다 만약 그렇다면 뭔가를 이해 수 있습니다 : CakePHP의 요리 책에서 이름 지정 규칙 규칙을 읽고, 그래서 거기에 나를 직접 해달라고 한)CakePHP의 MySQL 데이터베이스 명명 규칙은 질문

문제

  • 항목
  • 퀘스트

그리고 내가 가진 테이블 :

임 가진 내가 테이블을 가지고있다 6,
  • item_has_quest_requirements
  • quest_has_item_requirements
  • quest_has_item_rewards이 두 테이블을 연결하는 2 차 키 단지 HABTM 테이블입니다
  • quest_has_item_recommends

. 자, 그들 중 일부는 또한 OWN 특정 칼럼을 가지고 있습니다. 그래서 나는 그것들을 같은 테이블에 두지 않았습니다. 예를 들어, item_has_quest_requirements에는 단지 키가 있지만 quest_has_item_requirements금액으로 필드로 보상을하고 추천합니다.

그러나 CakePHP 명명 규칙을 따르는 경우 복합 기본 키를 사용하면 안되며 2 개의 테이블을 HABTM 테이블로 연결하려면 테이블 이름별로 알파벳순으로 테이블의 이름을 지정해야합니다. AFAIK는이 테이블이 모두 될 것이라고 말합니다 : items_quests 테이블은 불가능합니다. 열이 다음과 같은 HABTM 테이블을 만들 것 quest_requirements : items_quest_requirements

는 유일한 방법은 다음과 같은 완전히 새로운 별도의 테이블을 만들 수 있을까요?

이것은 내가 내 마음 속에서 굴러 다니는 것이므로 최선의 접근 방법이 무엇인지 약간 깨달을 수 있습니까?

+0

AFAIK CakePHP의 HABTM 테이블에 추가 데이터를 저장할 방법이 없습니다. 내가 틀렸다면 누군가 나를 교정하십시오. –

답변

3

두 테이블 간의 연결이 여러 개인 경우 이름 지정 규칙이 없습니다. 이 경우 모델에서 관련 테이블을 수동으로 지정해야합니다 (자세한 내용은 http://book.cakephp.org/view/1039/Associations-Linking-Models-Together#hasAndBelongsToMany-HABTM-1044 참조).

그러나 일부 조인 테이블에는 추가 열이 포함됩니다. 이러한 시나리오에서는 HABTM 연결 대신 Join Models ("hasMany through"라고도 함)을 사용하는 것이 더 나은 방법 일 수 있습니다.

+1

+1. OP는'item_has_quest_requirements' 연관을위한 HABTM 관계를 정의하고, 나머지 세 가지를 위해 Join Model을 정의해야합니다. – Stephen

0

케이크 이름 지정 규칙을 사용하도록 http://cakeapp.com으로 재현 해보십시오. 그리고 나중에 DB 스키마를 다운로드 할 수 있습니다.

관련 문제