2017-12-05 18 views
0

나는 id, questionsmarks을 포함하는 테이블 을 가지고 있습니다. 그런 다음 idquiz_name을 포함하는 테이블 quizzes이 있습니다. 나는 id 테이블에서 테이블과 id 테이블에서 question 테이블을 포함하는 question_quizzes라는 브리지 테이블을 만들었습니다. 어떻게 question_quizzes의 형태로 questions 테이블에 모든 데이터 (id, questions, marks)를 표시 할 수 있습니까?다른 모델의 데이터 가져 오기 cakephp 3.5

EDIT :이 questionQuizzes 제어기 내부 existingQuestion 기능

이다. existingQuestion 기능, 나는) (이것은 내가 내 코드를 편집 한

class QuestionQuizzesTable extends Table 
{ 


/** 
* Initialize method 
* 
* @param array $config The configuration for the Table. 
* @return void 
*/ 

var $name = 'QuestionQuizzes'; 

public function initialize(array $config) 
{ 
    parent::initialize($config); 

    $this->setTable('question_quizzes'); 

    $this->belongsTo('Quizzes', [ 
     'foreignKey' => 'quiz_id', 
     'joinType' => 'INNER' 
    ]); 
    $this->belongsTo('Questions', [ 
     'foreignKey' => 'question_id', 
     'joinType' => 'INNER' 
    ]); 
} 

/** 
* Returns a rules checker object that will be used for validating 
* application integrity. 
* 
* @param \Cake\ORM\RulesChecker $rules The rules object to be modified. 
* @return \Cake\ORM\RulesChecker 
*/ 
public function buildRules(RulesChecker $rules) 
{ 
    $rules->add($rules->existsIn(['quiz_id'], 'Quizzes')); 
    $rules->add($rules->existsIn(['question_id'], 'Questions')); 

    return $rules; 
} 
} 

questionQuizzesTable

하지만 여전히 오류 "멤버 함수의 발견에 전화가 질문 테이블

class QuestionQuizzesController extends AppController 
    public function existingQuestion() 
    { 
    $query = $questionQuizzes->find('all')->contain('Questions'); 
    foreach ($query as $questionQuizzes) { 
     echo $questionQuiz->question->id; 
    } 
} 

을 모두 표시 할 에 null ". 아무도 나를 도울 수 있습니까 ?? 내가 갇혔다

+1

https://book.cakephp.org/3.0/en/orm/associations.html – urfusion

+0

질문 표에있는 모든 데이터를 question_quizzes 형식으로 추가하고 싶습니다. 그래서, 질문 컨트롤러 또는 question_quizzes 컨트롤러에 작업 쿼리를 넣어야합니까? –

+0

이 게시물을 수정했습니다. –

답변

0

$query = $questionQuizzes->find()을 쓸 때 $questionQuizzes을 어디에도 선언하지 않았다. 변수는 존재로 완전히 형성되지 않습니다. 따라서 null이고, 당신은 그것에 함수를 호출하려고합니다. 이것은 모두 당신이 가지고있는 오류 메시지에서 분명하게 자명 한 것입니다, 물론 그것이 문제의 라인으로 바로 당신을 지시 했나요? (이 단지 $articles을 참조하는 제공하는 링크 @urfusion 코드의 조각이다, 그러나 그 맥락없이 표시하고 사전에 변수를 만들었다 고 가정합니다.)

수정이 $this->questionQuizzes->find()을 사용하는 것입니다. $thisquestionQuizzes 구성원은 초기화 기능에서 수행중인 작업으로 인해 Cake에서 초기화해야합니다. 매뉴얼의 해당 부분은 Query Builder 섹션 일 것입니다.

케이크 룰은 question_quizzes가 아닌 테이블의 이름을 question_quizzes로 지정합니다. 두 부분은 복수입니다. 또는 quizzes_questions도 작동하며 개인적으로 나에게 더 의미가 있습니다 (결국 퀴즈 질문을 추적합니다). 선택한 이름에 아무런 문제가 없지만 규칙을 더 자세히 따르면 사례가 코드에보다 쉽게 ​​적용될 수 있습니다.