前提・実現したいこと
こういう質問するのが初めてのため、乱文失礼します。
アンケートサイトの開発に携わっています。
一つのアンケート結果のデータから、テキストで記入した部分(複数ある)を
抽出して表示させるという仕様で作成しようとしています。
該当のソースコード
次のソースはアンケート結果を取得するコントローラー部分の抜粋です。
PHP
1 public function getQuestionFeedback($userId, $isUseMaintain = false) 2 { 3 if ($isUseMaintain) { 4 $idQuestion = Question::join('surveys', 'survey_id', '=', 'surveys.id') 5 ->where('surveys.survey_type', SurveyRepository::SURVEY_TYPE_AAA) 6 ->where( 7 'questions.content', 8 'LIKE', 9 SurveyRepository::COMMON_QUESTION_NUMBER['open'][SurveyRepository::SURVEY_TYPE_AAA][0] . '%' 10 ) 11 ->pluck('questions.id'); 12 } else { 13 $user = User::find($userId); 14 $idQuestion = []; 15 $idQuestion2 = []; 16 if ($user->is_show_buy && $user->company->use_bbb) { 17 $idbbb = $this->getQuestionId(SurveyRepository::SURVEY_TYPE_BBB); 18 if (!empty($idbbb)) { 19 $idQuestion[] = $idbbb; 20 } 21 $idbbb2 = $this->getQuestionId2(SurveyRepository::SURVEY_TYPE_BBB); 22 if (!empty($idbbb2)) { 23 $idQuestion2[] = $idbbb2; 24 } 25 } 26 if ($user->is_show_sell && $user->company->use_ccc) { 27 $idccc = $this->getQuestionId(SurveyRepository::SURVEY_TYPE_CCC); 28 if (!empty($idccc)) { 29 $idQuestion[] = $idccc; 30 } 31 $idccc2 = $this->getQuestionId2(SurveyRepository::SURVEY_TYPE_CCC); 32 if (!empty($idccc2)) { 33 $idQuestion2[] = $idccc2; 34 } 35 } 36 } 37 $questionResults = QuestionResult::where([ 38 'user_id' => $userId 39 ]) 40 ->whereIn('question_id', $idQuestion) 41 ->whereHas('surveyResult') 42 ->orderBy('created_at', 'DESC') 43 ->get(); 44 $questionResults2 = QuestionResult::where([ 45 'user_id' => $userId 46 ]) 47 ->whereIn('question_id', $idQuestion2) 48 ->whereHas('surveyResult') 49 ->orderBy('created_at', 'DESC') 50 ->get(); 51 52 $answers = []; 53 $sorts = SurveyRepository::sortVoiceOneByOne(); 54 $changes = $this->getChanges(); 55 foreach ($sorts as $sort) { 56 foreach ($questionResults as $questionResult) { 57 $surveyResult = $questionResult->surveyResult; 58 $surveyType = $surveyResult->survey->survey_type; 59 if ($surveyType == $sort) { 60 $answers[$surveyType][] = [ 61 'memo' => $surveyResult->memo, 62 'id' => $surveyResult->id, 63 'content' => $questionResult['answer'], 64 'date' => $questionResult['created_at']->format('Y/m/d'), 65 'type' => $surveyType, 66 'change_survey_type' => $this->getChangeSurveyType($surveyResult, $changes) 67 ]; 68 } 69 } 70 } 71 72 return $answers; 73 } 74 75
試したこと
foreach ($questionResults as $questionResult) の部分に、上段にある
$questionResults2 を割り当てて、
'content' => $questionResult2['answer']を定義すると、欲しい回答の
情報が取得できるのですが、$questionResults で情報を取得しつつ
同じタイミングで foreach しつつ(できない?)$questionResults2 からも
取得する方法をご教示いただけると幸いです。
補足情報(FW/ツールのバージョンなど)
■環境情報
PHP 7.3.8
Laravel Framework 5.7.28
あなたの回答
tips
プレビュー