는 다음과 같은 테이블 구조를 감안할 때 :Doctrine 쿼리 빌더를 사용하여 그룹화 된 콜렉션에 대해 연관 배열 인덱스로 groupBy 열을 사용할 수 있습니까?
Matches:
| id | round | home_team | away_team |
| 1 | 1 | Juventus | Milan |
| 2 | 1 | Inter | Roma |
| 3 | 2 | Juventus | Inter |
| 4 | 2 | Roma | Milan |
... 그것은 열 중 하나를 기반으로 컬렉션을 만들 수 있습니까? matches
은 round
열을 기반으로하여 컬렉션으로 정리되기를 바랍니다.
나의 현재 쿼리 빌더는 다음과 같습니다
/** @var MatchRepository $matchRepository */
$matchRepository = $em->getRepository('JCNApiBundle:Football\Match');
return $matchRepository->createQueryBuilder('m', 'm.round')
->where('m.competition = :competition')
->setParameter('competition', $competitionId)
->groupBy('m.id, m.round')
->getQuery()
->getArrayResult()
;
그것은 불행하게도 그룹당 하나 개의 행 반환
: (round
당 하나의 match
)
[
// Round 1
1 => [
// Match 1
"id" => 1,
"round" => 1,
"home_team" => "Juventus",
"away_team" => "Milan",
],
// Round 2
2 => [
// Match 3
"id" => 3,
"round" => 2,
"home_team" => "Juventus",
"away_team" => "Inter",
]
]
나는 이런 식으로 뭔가를 찾고 있어요를 :
[
// Round 1
1 => [
// Match 1
0 => [
"id" => 1
"round" => 1
"home_team" => "Juventus"
"away_team" => "Milan"
],
// Match 2
1 => [
"id" => 2
"round" => 1
"home_team" => "Inter"
"away_team" => "Roma"
]
]
// Round 2
2 => [
// Match 3
0 => [
"id" => 3
"round" => 2
"home_team" => "Juventus"
"away_team" => "Inter"
],
// Match 4
1 => [
"id" => 4
"round" => 2
"home_team" => "Roma"
"away_team" => "Milan"
]
]
]
Doctrine 쿼리 빌더와 관계가 있습니까?
틀린 것은 아니지만이 질문은 교리 문답입니다. 교리는 ORM입니다. 교리와 함께 상자 밖으로 이것을 할 수있는 본래의 방법이 있는지 묻습니다. 나는 일반적으로 결과 세트에서 이러한 구조를 생성하거나 사용자 정의 히트 레이터를 사용하여 원하는 것을 얻습니다. 저는 이것을 매우 일반적인 작업이라고 생각합니다. 따라서 Doctrine에서 기본적으로이 작업을 수행 할 수있는 방법이 있는지 궁금합니다. (대답은 btw가 아닐 것으로 생각합니다.) –
아니요, Doctrine을 사용하여이 작업을 네이티브 방식으로 수행 할 수는 없습니다. BTW, 그런 그룹화를 나타내는 개체 구조가 없으므로 여기서 ORM을 사용할 방법이 없습니다. 어떤 종류의 '라운드 (Round)'엔티티가 필요할 것입니다.하지만 여전히 가능한지 확실하지 않습니다. –
슬픈 이야기. 나는 당신의 대답을 처음에 어디에서 받았다고 생각합니다. –