我在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;
}
}
在 Controller 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]);
}
day/listAll.html.twig
中 {{ dump(days) }}
的输出为:
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
感谢您的宝贵时间。
最佳答案
我会尽力提供解决方案和解释,希望对您有所帮助。
假设您有这样的表结构:
并且您希望获取按 dayOfWeek
分组的所有记录以及将在这一天进行讲座的讲师列表(分别用逗号分隔)。
你可能会想出这样的东西:
SELECT `dayOfWeek`, GROUP_CONCAT(`lector`) AS `dayLectors` FROM `day` GROUP BY `dayOfWeek`
另外,如果你想获取已获取记录的 id 列表,你可以这样写:
SELECT `dayOfWeek`, GROUP_CONCAT(`lector`) AS `dayLectors`, GROUP_CONCAT(`id`) AS `dayIds` FROM `day` GROUP BY `dayOfWeek`
并且,如果我正确理解您的问题,这个答案可能会对您有所帮助。
关于php - 如何在 symfony 存储库中使用 group by,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45135953/