Как использовать группу в репозитории symfony

У меня этот код в DayRepository.php:

public function findAllFromThisUser($user)
    {
        $query = $this->getEntityManager()
            ->createQuery(
                'SELECT d FROM AppBundle:Day d
                WHERE d.user = :user
                ORDER BY d.dayOfWeek ASC'
            )->setParameter('user', $user);
        try{
            return $query->getResult();
        } catch (\Doctrine\ORM\NoResultException $e){
            return null;
        }

    }

В контроллере DayController.php у меня есть этот код:

/**
 * @Route("/days/list", name="days_list_all")
 */
public function listAllAction()
{
    $user = $this->container->get('security.token_storage')->getToken()->getUser();

    $days = $this->getDoctrine()
        ->getRepository('AppBundle:Day')
        ->findAllFromThisUser($user);

    //$user = $job->getUser();

    return $this->render('day/listAll.html.twig', ['days' => $days]);
}

Вывод {{ dump(days) }} в day/listAll.html.twig:

array:3 [▼
  0 => Day {#699 ▼
    -id: 11
    -dayOfWeek: "0"
    -lessonTime: DateTime {#716 ▶}
    -user: User {#486 ▶}
    -job: Job {#640 ▶}
    -client: Client {#659 ▶}
  }
  1 => Day {#657 ▼
    -id: 13
    -dayOfWeek: "0"
    -lessonTime: DateTime {#658 ▶}
    -user: User {#486 ▶}
    -job: Job {#640 ▶ …2}
    -client: Client {#659 ▶ …2}
  }
  2 => Day {#655 ▼
    -id: 12
    -dayOfWeek: "4"
    -lessonTime: DateTime {#656 ▶}
    -user: User {#486 ▶}
    -job: Job {#640 ▶ …2}
    -client: Client {#659 ▶ …2}
  }
]

Мне действительно нужно сгруппировать результаты, чтобы все результаты, имеющие dayOfWeek как 0, были сгруппированы вместе? Мне нужно сгруппировать результаты в соответствии с свойством dayOfWeek. Я попытался использовать GROUP BY d.dayOfWeek в запросе, но я получаю эту ошибку:

SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'taskMaestro.d0_.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

Спасибо за ваше время.

Ответ 1

Я постараюсь предоставить решение и объяснение, которые могут вам помочь. Скажем, у вас есть такая табличная структура: введите описание изображения здесь

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

Вы можете придумать что-то вроде этого:

SELECT `dayOfWeek`, GROUP_CONCAT(`lector`) AS `dayLectors` FROM `day` GROUP BY `dayOfWeek`

И результат будет:
введите описание изображения здесь

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

SELECT `dayOfWeek`, GROUP_CONCAT(`lector`) AS `dayLectors`, GROUP_CONCAT(`id`) AS `dayIds` FROM `day` GROUP BY `dayOfWeek`

Таким образом, результат будет:
введите описание изображения здесь


И, соответственно, если я правильно понял вашу проблему, этот ответ может вам помочь.