Я пытаюсь получить общее количество людей, которые ответили на вопрос в опросе, поэтому survey_id и survey_question_id должны соответствовать значению, а затем я должен иметь возможность отделить user_id, чтобы он учитывал только разные, у некоторых вопросов может быть несколько ответов от одного и того же человека. Как я могу это сделать?
Это схема таблицы из таблицы, где я хочу получить эту информацию
Schema::create('survey_answers', function (Blueprint $table) {
$table->increments('id');
$table->integer('survey_id')->unsigned();
$table->integer('survey_question_id')->unsigned();
$table->integer('user_id')->unsigned();
$table->text('answer');
$table->timestamps();
$table->foreign('survey_id')->references('id')->on('surveys');
$table->foreign('survey_question_id')->references('id')->on('survey_questions');
$table->foreign('user_id')->references('id')->on('users');
});
Я думал, что-то вроде этого, это возвращает 1, когда должно вернуться 7. Я не уверен, почему или как это исправить. Если я уберу groupBy
и count
, то получу 7, но это не сработает, все вопросы, потому что некоторые вопросы имеют множественный выбор и могут иметь 15 ответов, сделанных на примере только 5 человек. Последняя идея для этого - показать отчет с процентами или людьми, которые выбрали каждый ответ, и для этого мне нужно общее количество, в моем коде у меня уже есть количество ответов для каждого варианта.
$total = SurveyAnswer::where('survey_id', $survey->id)->where('survey_question_id', $question->id)
->groupBy('user_id')->count();