2013-02-21 3 views
0

방금 ​​CakePHP를 배우기 시작했으며이 상황에서 도움이 필요합니다.CakePHP 2.x - 모델을 만들지 않고 테이블에서 데이터 가져 오기

나는 여러 값 (MBA, MCA, BCA, BA, PHD)을 가질 수있는 'Educational Qualification'이라는 하나의 속성을 가진 하나의 테이블 (Student)과 해당 모델 (Student)을 가지고 있는데, 모든 학위 목록이 들어 있습니다.

이제 학생이 자신을 등록 할 때 자격에서 여러 옵션을 선택해야합니다.

내 View의 데이터베이스에서 DegreeMst 데이터를 여러 옵션으로 가져오고 싶습니다. 제 질문은이 manytomany 관계에서 새로운 모델 DegreeMst를 만든 다음 Student 모델과 ManytoMany 관계를 만들어야 만한다는 것입니다.

아니면 자신이 MVC 프레임 워크 모델을 생성하지 않고 테이블에서 데이터를 가져 오기 위해 필요 발견하면 내가, 무엇보다도 새로운 모델 DegreeMst

답변

2

먼저 만들고 않고이 작업을 수행 할 수 있습니다, 당신이하고있는 좋은 기회가있다 뭔가 잘못.

5 개의 가능한 값 (MBA, MCA, BCA, BA, PHD)이 있다면, 아마도 has_mba, has_mca 등과 같이 테이블에 5 개의 개별 tinyint (1) 필드 만 만들면됩니다. 각보기를 별도의 확인란으로 표시하십시오. 아마도 가장 간단한 방법 일 것입니다.

당신이 그것을하고 싶지 않고 분리 된 DegreeMst 테이블을 원한다면, 당신이 원하는 것은 hasAndBelongsToMany relationship입니다.

student_id 및 degreemst_id 열과 함께 students_degreemsts와 같은 별도의 조인 테이블이 필요합니다. 조인 테이블에 대한 모델을 작성할 필요가 없습니다.

이 설정 일단, 출력 뷰의 코드가 체크 박스가있을 것 같은 뭔가 : 당신은 3 개 데이터베이스 테이블 및 2 모델이 필요합니다

echo $this->Form->input('Student.DegreeMst',array('label'=>'Select your degrees','multiple'=>'true')); 

UPDATE. Many-to-Many (즉, Cake는 hasAndBelongsToMany라고하는) 관계와 joins tables에 대해 알고 있습니까?

데이터베이스에서

, 당신의 CakePHP convetions에 따라, 3 테이블이 필요이라는 것이다 :

학생 (ID, 이름, 주소, other_field)
도 (ID, 이름, another_field)
students_degrees를 (ID를 , student_id, degree_id)

마지막 테이블은 가입 테이블이며 학생 및 학위 테이블에 대한 두 개의 외래 키를 포함해야합니다. CakePHP에서는 조인 테이블에 모델이나 컨트롤러가 필요 없습니다.

당신은 분명히 당신이 당신의 hasAndBelongsToMany의 관계를 정의 볼 수있는 곳입니다 당신의 학생 테이블에 대한 모델을 필요합니까 : 당신은 또한 당신도 테이블에 대한 모델이 필요

public $hasAndBelongsToMany = array(
    'Degree' => array(
     'className' => 'Degree', 
     'joinTable' => 'students_degrees', 
     'foreignKey' => 'student_id', 
     'associationForeignKey' => 'degree_id', 
    ), 
); 

을,하지만 당신은 neccessarily하지 않는이 필요한 경우를 제외하고는 해당 모델에서 hasAndBelongsToMany 관계를 다시 정의하십시오.

+0

도움을 청하기 위해 조슈아에게 감사드립니다.나는 100 개가 넘는 값을 가지고 있기 때문에 (5는 단지 예일 뿐이다) 나는 당신의 제 2의 제안을해야 할 것이다. 제 질문은 이제 hasAndBelongsToMany 관계가 다른 모델로 만들어 져야합니다 (내가 맞다면). 그러면 제 2 차 모델 DegreeMst를 생성 한 다음이 연관성을 유지해야한다고 제안하고 있습니까? 아니면 한 학생 만 모델로 할 수 있습니까? –

+0

나는 나의 대답을 더 많은 정보로 업데이트했다. –

+0

각 단계를 설명해 주신 Joshua에게 감사드립니다. 이것은 정말 도움이되었고 관계와 해당 테이블을 만들 수있었습니다. 나는 당신을 투표 할 수 있으면 좋겠지 만 나는 투표 할만큼 '평판'이 없다. –

관련 문제