2014-09-26 69 views
0

我正在嘗試創建一個應用程序,您可以在其中創建和回答測驗。 創建部分已經完成,我可以保存測試,問題和答案。CakePHP如何在一個視圖中顯示來自三個相關模型的數據?

它們之間的關係:

Test $hasMany Question 
Question $hasMany Answer 

我創建了一個viewTest示出了一個選擇的測試和使用的foreach它的相關問題:

echo $test['Test']['id']; 
echo '</br>'; 



foreach ($test['Question'] as $question){ 
    echo $question['text']; 
    echo '<br>'; 

我如何可以檢索與每個問題的答案數據?

*編輯*

測試模型關係:

public $hasMany = array('Question' => array('className' => 'Question', 'foreignKey' => 'idTest')); 

哪裏idTest是對數據庫的外鍵

問題型號的關係:

public $belongsTo = array('Test' => array('className' => 'Test', 'foreignKey' => 'idTest')); 

public $hasMany = array('Answer' => array('className' => 'Answer', 'foreignKey' => 'idQuestion')); 

應答模型關係:

public $belongsTo = array('Question' => array('className' => 'Question', 'foreignKey' => 'idQuestion')); 

測試返回:

array (size=2) 
    'Teste' => 
    array (size=4) 
     'id' => string '2' (length=1) 
     'dataLimite' => string '2014-09-25' (length=10) 
     'valorTeste' => string '2' (length=1) 
     'numQuestoes' => string '2' (length=1) 
    'Questao' => 
    array (size=2) 
     0 => 
     array (size=3) 
      'id' => string '3' (length=1) 
      'idTeste' => string '2' (length=1) 
      'descricao' => string 'questao1 ' (length=9) 
     1 => 
     array (size=3) 
      'id' => string '4' (length=1) 
      'idTeste' => string '2' (length=1) 
      'descricao' => string 'dfsdfa' (length=6) 

,將在試驗了同樣的看法,問返回:

array (size=3) 
    'id' => string '3' (length=1) 
    'idTeste' => string '2' (length=1) 
    'descricao' => string 'questao1 ' (length=9) 

編輯

有關問題的查看,問題返回:

array (size=3) 
    'Questao' => 
    array (size=3) 
     'id' => string '3' (length=1) 
     'idTeste' => string '2' (length=1) 
     'descricao' => string 'questao1 ' (length=9) 
    'Teste' => 
    array (size=4) 
     'id' => string '2' (length=1) 
     'dataLimite' => string '2014-09-25' (length=10) 
     'valorTeste' => string '2' (length=1) 
     'numQuestoes' => string '2' (length=1) 
    'Alternativa' => 
    array (size=2) 
     0 => 
     array (size=5) 
      'id' => string '1' (length=1) 
      'idQuestao' => string '3' (length=1) 
      'isRespostaCerta' => boolean false 
      'respostaUsuario' => null 
      'descricao' => string 'alternativa 1' (length=13) 
     1 => 
     array (size=5) 
      'id' => string '2' (length=1) 
      'idQuestao' => string '3' (length=1) 
      'isRespostaCerta' => boolean true 
      'respostaUsuario' => null 
      'descricao' => string 'alternativa 2' (length=13) 
+0

測試$的hasMany問題 - 問題$的hasMany答案; 這兩個聲明中的「問題」是一樣的嗎? 如果是,那麼類似這樣的事情:'echo $ question ['answers']' – Suryavanshi 2014-09-26 00:41:22

+0

在你的問題模型中,你是否描述了問題和答案之間的關係? – 2014-09-26 06:08:22

回答

0

解決

在我TestsController我創建了一個viewTests方法獲取數據,其中Test.id = $ ID(從索引表);

$test = $this->Test->findById($id); 

然後我寫TE會議是$ ID和redirrect到QuestionsController

$this->Session->write('idTest',$id); 

    return $this->redirect(array('controller' => 'questions','action' => 'viewTest')); 

在QuestionController我創造了另一個viewTests從會話$ idTest信息的讀取。

$idTest = $this->Session->read('idTest'); 
$this->set('idTest', $idTest); 

然後我尋找那些與測試

$this->loadModel('Question'); 

$questoes = $this->Question->find('all', array(
      'conditions' => array('Question.idTest'=>$idTest) 
      )); 
$this->set('questions', $questions); 

我tests_view檢索答案的問題:

foreach ($questions as $question){ 

    foreach ($question['Answer'] as $answer){ 



     } 
} 
0

您是否已經在$ question ['Answer']嘗試過一個foreach()?嘗試調試($問題),看看它是否檢索答案數組。有時你需要一個$ hasAndBelongsToMany。

+0

$在這個視圖中的問題沒有答案信息;注意(8):未定義的索引和警告(2):爲foreach()提供的參數無效。 – 2014-09-28 03:33:50

相關問題