Я, честно говоря, не так хорош с группой в SQL. У меня есть две сущности 1) Блоки 2) Наборы.
Каждый блок содержит много наборов. В моей таблице это отображается с помощью ManyToOne в наборах. Каждый набор имеет столбец с именем «блок», который ссылается на идентификатор блока. Просто.
Однако, когда я пытаюсь получить все блоки или все наборы, я получаю, конечно, массив, подобный этому: (я специально сделал укороченные массивы для удобства чтения)
для наборов:
array:34 [▼
0 => Sets {#833 ▼
-id: 1
-name: "Alpha"
-year: "1993-08"
-icon: "000"
-block: Blocks {#836 ▶}
}
1 => Sets {#838 ▼
-id: 2
-name: "Arabian Nights"
-year: "1993-12"
-icon: "003"
-block: Blocks {#836 ▶}
}
2 => Sets {#839 ▶}
3 => Sets {#841 ▶}
4 => Sets {#842 ▶}
5 => Sets {#844 ▶}
]
и для блоков:
array:27 [▼
0 => Blocks {#836 ▶}
1 => Blocks {#840 ▼
-id: 2
-name: "Ice Age"
-year: "1995"
-description: "The Ice Age block is the first block of sets, consisting of the large expansion Ice Age in June 1995 and two small expansions, Alliances in June 1996 and Coldsn ▶"
}
2 => Blocks {#843 ▼
-id: 3
-name: "Mirage"
-year: "1996"
-description: "The Mirage block is the second block of sets, consisting of the large expansion Mirage followed by two small expansions, Visions and Weatherlight. The block cam ▶"
}
3 => Blocks {#846 ▼
-id: 4
-name: "Tempest"
-year: "1997"
-description: """
Tempest block, officially called the Rath Cycle, is the third Magic block, spanning 1997–1998. It encompasses three sets: the large expansion Tempest and the tw ▶
The keywords introduced in this block were buyback and shadow. Three creature types (Licids, Slivers, and Spikes) also debuted here.
"""
}
4 => Blocks {#849 ▶}
5 => Blocks {#852 ▶}
6 => Blocks {#855 ▶}
7 => Blocks {#858 ▶}
]
Но массив, который я хочу получить , это:
Массив всех блоков и их соответствующих наборов внутри.
array:16 [▼
0 => array:3 [▼
"name" => "Outside Block"
"year" => "199X"
"content" => array:2 [▼
0 => array:2 [▼
"name" => "Alpha"
"icon" => "000"
]
1 => array:2 [▼
"name" => "Arabian Nights"
"icon" => "003"
]
]
]
1 => array:3 [▶]
2 => array:3 [▶]
3 => array:3 [▶]
]
Как видите, мне удалось это сделать используя циклы внутри моего PHP кода. Но мне интересно, это невозможно сделать с помощью SQL? Можно ли создать массив с помощью group by, чтобы получить все блоки в столбце дифференциалов и содержащие их наборы в каждой строке?