Получить количество людей, которые ответили на вопрос в опросе - PullRequest
0 голосов
/ 08 января 2020

Я пытаюсь получить общее количество людей, которые ответили на вопрос в опросе, поэтому 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();

1 Ответ

2 голосов
/ 08 января 2020

Если вы хотите, чтобы число отдельных пользователей, ответивших на данный вопрос, вы можете попробовать:

$total = SurveyAnswer::where('survey_id', $survey->id)
              ->where('survey_question_id', $question->id)
              ->selectRaw('COUNT(DISTINCT user_id) as count')
              ->value('count');

Это должно вернуть количество различных пользователей, ответивших на этот вопрос, независимо от того, сколько раз

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...