2016-10-27 4 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

ための2つのテーブルではassosiatedされていません。接続する条件を定義する必要があります。

$this->belongsTo('Questions', [ 
     'className' => 'Publishing.Questions', 
     'conditions' => ['A.id' => 'B.id'], //add this 
]); 

P/s:FB Cakephp Vietさんがあなたの質問に回答しました。あなたは両方を定義する必要が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']); 
0

:が 'className' => 'Publishing.Questions' そして私はQuizDetailsTableファイル変更:から

関連する問題