2016-10-27 3 views
3

quizdetails 테이블에서 질문 데이터를 선택하고 싶습니다. 그리고 질문의 데이터는 응답 테이블과 조인 될 것입니다. 그래서 내가 사용 코드 PHP :cakephp를 사용할 수 없습니다. 3

$questions = $this 
    ->QuizDetails->find() 
    ->contain([ 
     'Questions' => function($q) { 
      return $q->contain(['Answers']); 
     } 
    ]) 
    ->where(['QuizDetails.quiz_id' => $id]); 

파일 AnswersTable :

$this->table('answers'); 
$this->belongsTo('Questions', [ 
    'className' => 'Publishing.Questions', 
    'foreignKey' => 'question_id', 
]); 

파일 QuizDetailsTable : 내가 그것을 실행할 때 그래서

$this->table('quiz_details'); 
$this->belongsTo('Questions', [ 
    'className' => 'Publishing.Questions', 
    'foreignKey' => 'question_id', 
]); 

, 오류를 통해 질문이와 연결되어 있지 않습니다 답변

내가 사용하는 경우 :

$question = $this->Questions->find()->contain(['Answers']) 

괜찮습니다. 제발 도와주세요.

답변

0

난 그렇게 간단하게하려고하면 그냥, QuizDetails 내에서 질문과 답변을 포함 할 필요가 잘못 아니에요 경우 :

$questions = $this->QuizDetails->find()->contain(['Questions.Answers']) 
      ->where(['QuizDetails.quiz_id' => $id]); 
+0

나는 그것을 시도, 그리고 여전히 오류 : 답변이 –

+0

과 관련이없는 경우 답변에 실제로 포함되어 있으면 $ question = $ this-> Questions-> find() -> contai n ([ 'Answers'])? –

+0

대답은 질문에 속하는가 ?? –

0

두 있기 때문에 테이블이 assosiated되지 않습니다. 연결할 조건을 정의해야합니다.

P/s : FB Cakephp Viet에 게시 된 질문에 대한 답변입니다. 에서

0

문제 : '클래스 이름'=> 'Publishing.Questions' 그리고 난에 QuizDetailsTable 파일 변경 :

감사에게 OK입니다

$this->table('quiz_details'); 
$this->belongsTo('Questions', [ 
     'className' => 'Publishing.Questions', 
     'foreignKey' => 'question_id' 
]); 

모든

0

당신이 모두를 정의해야 방법.

이 ...

$this->table('answers'); 
$this->belongsTo('Questions', [ 
    'className' => 'Publishing.Questions', 
    'foreignKey' => 'question_id', 
]); 

...이 : 당신은이 작업을 수행 할 수 있습니다 예에서

$this->table('question'); 
$this->hasMany('Answers', [ 
    'className' => 'Publishing.Answers', 
    'foreignKey' => 'question_id', 
]); 

:

$answer = $this->Answers->find()->contain(['Questions']);