2016-12-02 13 views
0

表は次のように定義されています。別の表から最初の表への項目の配列の結合

survey_question_answers 

    id | surveyId | questionId | title | description | creationDate 

survey_questions 
     id | surveyId | title | description | creationDate 

私は

問題がある
SELECT `SurveyQuestion`.*, `Answer`.* FROM `uaehub`.`survey_questions` AS `SurveyQuestion` LEFT JOIN `uaehub`.`survey_question_answers` AS `Answer` ON (`SurveyQuestion`.`id` = `Answer`.`questionId`) WHERE `SurveyQuestion`.`id` = 1 GROUP BY SurveyQuestion.id 

、それが唯一の代わりにすべての答えの1件の回答をフェッチしているmysqlのクエリを使用しています。私は私のsurveyQuestion私は、CakePHPでこれを行うにしようとしています

をに接続されているすべての答えを取得するためにクエリを変更するにはどうすればよい

$questions = $this->SurveyQuestion->find('all', array( 
       'conditions' => array('SurveyQuestion.id' => $survey['id']), 
       'fields' => array(
         'SurveyQuestion.*', 
         'Answer.*' 
       ), 
       'joins' => array(
         array(
           'type' => 'LEFT', 
           'table' => 'survey_question_answers', 
           'alias' => 'Answer', 
           'conditions' => array('SurveyQuestion.id = Answer.questionId') 
         ),             
       ), 
       'group' => array(
         'SurveyQuestion' 
       ),     
     )); 

これは私が、 このような

{ 
    "SurveyQuestion": { 
     "id": "1", 
     "surveyId": "1", 
     "title": "Did you exercised early in the morning?", 
     "description": "If Yes, please choose Yes. If no please choose NO", 
     "creationDate": "2016-12-02 09:39:18" 
    }, 
    "Answer": [{ 
     "id": "1", 
     "surveyId": "1", 
     "questionId": "1", 
     "answer": "Yes", 
     "creationDate": "2016-12-02 09:39:44" 
    }, 
{ 
     "id": "2", 
     "surveyId": "1", 
     "questionId": "1", 
     "answer": "NO", 
     "creationDate": "2016-12-02 09:39:44" 
    }] 
    } 

何かをしたいものです質問に添付された回答の配列を持っています

私はatmを取得しています

{ 
    "SurveyQuestion": { 
     "id": "1", 
     "surveyId": "1", 
     "title": "Did you exercised early in the morning?", 
     "description": "If Yes, please choose Yes. If no please choose NO", 
     "creationDate": "2016-12-02 09:39:18" 
    }, 
    "Answer": { 
     "id": "1", 
     "surveyId": "1", 
     "questionId": "1", 
     "answer": "Yes", 
     "creationDate": "2016-12-02 09:39:44" 
    } 
    } 

注、これは、CakePHPのフォーマット

答えて

1

なぜあなたはGROUP BYを使用しないのですか?これが1行しか得られない理由です。グループを出てください。それはうまくいくはずです。

GROUP BYは結果をグループ化して、surveyQuestion.id(=すべての質問)に対して(あなたの場合は)1行だけが返されるようにします。

+0

質問を添付して複数の行が表示される場合は、多数の質問がありますが、各質問には回答が数多く含まれていることを覚えておいてください。 –

+0

あなたは何を得て、あなたは欲しい。 – Seb

+0

すべての行には質問と回答があります(両方のテーブルを結合します)。 – Seb

関連する問題