public static function getMemberCodesSqlFilter() { if (empty(self::$memberAnswersCodesSqlFilters)) { $groupedCodesArray = self::getGroupedCodes(); /** * Get all answers excluding group codes */ $memberAnswers = MembersQuestionsAnswers::find()->innerJoinWith('questionOption'); if (!empty($groupedCodesArray)) { $memberAnswers->where(['not in', 'code_id', $groupedCodesArray['codes']]); } $memberAnswers->all(); /** * Run throw answers to build where arrays */ foreach ($memberAnswers as $answer) { if (!empty($answer->questionOption->code_id)) { foreach ($answer->questionOption->code_id as $code_id) { //build include codes ids array self::$memberAnswersCodesSqlFilters['include'][] = ['like', 'code_id', "[{$code_id}]"]; //build exclude codes ids array self::$memberAnswersCodesSqlFilters['exclude'][] = ['not like', 'no_code_id', "[{$code_id}]"]; } } } } return self::$memberAnswersCodesSqlFilters; }
/** * @return \yii\db\ActiveQuery */ public function getMembersQuestionsAnswers() { return $this->hasMany(MembersQuestionsAnswers::className(), ['member_id' => 'id']); }
/** * @return \yii\db\ActiveQuery */ public function getQuestionsAnswers() { return $this->hasOne(MembersQuestionsAnswers::className(), ['question_id' => 'id']); }
?> <?php //= $form->errorSummary($questionsAnswers); ?> <?php /* output all attributes related tot the mapping category */ $member_id = Yii::$app->getUser()->id; ?> <?php /* output all questions related tot the mapping category */ foreach ($questionsModel as $model) { $value = $option_id = ''; if ($answersModel = MembersQuestionsAnswers::findOne(['question_id' => $model->id, 'member_id' => $member_id])) { $value = $answersModel->value; $option_id = $answersModel->option_id; } if ($model->fieldsTypes[0]->has_options) { //if question has options display a dropdown echo $form->field($questionsAnswers, "value_{$model->id}")->dropDownList(ArrayHelper::map(MappingQuestionsToOptions::findAll(['question_id' => $model->id]), 'id', 'title'), ['prompt' => Yii::t('frontend', '-- Select --'), 'options' => [$option_id => ['Selected' => 'selected']]])->label($model->title); //$this->registerJs("$('form').yiiActiveForm('updateMessages', { //'MembersQuestionsAnswers[32][value]': ['I don\'t like it!'] //}, true);"); } else { // else if question does not have options display a text field echo $form->field($questionsAnswers, "value_{$model->id}")->textInput(['value' => $value]); } } ?>