php - 複数 - symfony3 entity 作成
symfonyリポジトリでgroup byを使用する方法 (1)
私はあなたに役立つかもしれない解決策と説明を提供しようとします。
次のようなテーブル構造があるとしましょう:
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`
そして、それぞれ、あなたの問題を正しく理解すれば、この答えがあなたを助けるかもしれません。
私は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]);
}
day/listAll.html.twig
の{{ 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
御時間ありがとうございます。