Сгруппировать по электронной почте и question_id

Я разрабатываю небольшое приложение, которое может создавать опросы, и в этих опросах есть вопрос, где вопрос может быть в простой форме ввода или в виде флажков.

Моя проблема связана с несколькими значениями (радиовходы), у меня есть таблица под названием «ответы» с указанной выше структурой:

Answers (table):
- id;
- question_id;
- answer;
- email;

На одной из моих внутренних страниц у меня есть таблица, в которой я зацикливаю вопрос и ответы.

Работает нормально, но проблема в том, что когда у меня есть несколько значений, таблица заголовков (вопросы) начинает меньше ответов тела столбцов, и это из-за количества ответов.

Я создал этот запрос, используя красноречие и коллекцию, где сначала я упорядочиваю группу по электронной почте.

$survey = Survey::find($id);

return $survey->answers->groupBy('email');

Это дает мне массив сгруппированных ответов из каждого письма, это здорово, но теперь мне нужно сгруппировать вопросы внутри групп писем, в моем случае «question_id». Но не работает для меня.

Я пробовал что-то вроде

 return $survey->answers->groupBy('email')->groupBy('question_id');

Но это не работает.


person Pedro    schedule 23.03.2017    source источник


Ответы (1)


Поскольку метод groupBy() принимает несколько параметров и перебирает их:

public function groupBy(...$groups)
{
    foreach ($groups as $group)

Сделай это:

return $survey->answers->groupBy('email', 'question_id');
person Alexey Mezenin    schedule 23.03.2017
comment
Уже пробовал, но 2 записи с одинаковым question_id не группируются. - person Pedro; 23.03.2017