Pobierz jako Assoc
do ręcznego: http://php.net/manual/en/pdostatement.fetchall.php
fetch_style
sterowania zawartość zwróconej tablicy, jak udokumentowano w PDOStatement :: pobierania(). Domyślne wartości PDO :: ATTR_DEFAULT_FETCH_MODE (domyślnie: PDO :: FETCH_BOTH)
Aby zwrócić tablicę zawierającą wszystkie wartości pojedynczej kolumny ze zbioru wyników, należy określić PDO :: FETCH_COLUMN. Możesz określić, która kolumna ma być oparta na parametrze kolumna-indeks.
Aby pobrać tylko unikalne wartości pojedynczej kolumny z zestawu wyników, bitwise-OR PDO :: FETCH_COLUMN z PDO :: FETCH_UNIQUE.
Aby zwrócić tablicę asocjacyjną zgrupowaną według wartości określonej kolumny, bitowe-OR PDO :: FETCH_COLUMN z PDO :: FETCH_GROUP.
Ten ostatni bit jest kluczem. To nie wydaje się być w pełni udokumentowane (które udało mi się znaleźć), ale zamiast PDO :: FETCH_COLUMN, można połączyć PDO :: FETCH_ASSOC z PDO :: FETCH_GROUP do osiągnięcia pożądanego rezultatu:
$PDOstmt->fetchAll(PDO::FETCH_ASSOC | PDO::FETCH_GROUP)
Tak biorąc pod uwagę powyższe dane:
$stmt = $PDO_obj->prepare('select * from brands');
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC | PDO::FETCH_GROUP);
d($result);
wyniku której:
array (6) [
'1' => array (1) [
array (2) [
'name' => string (10) "Solidfloor"
'url' => string (10) "solidfloor"
]
]
'2' => array (1) [
array (2) [
'name' => string (9) "Quickstep"
'url' => string (9) "quickstep"
]
]
'4' => array (1) [
array (2) [
'name' => string (10) "Cleanfloor"
'url' => string (10) "cleanfloor"
]
]
'5' => array (1) [
array (2) [
'name' => string (12) "Blue Dolphin"
'url' => string (12) "blue-dolphin"
]
]
'6' => array (1) [
array (2) [
'name' => string (5) "Krono"
'url' => string (5) "krono"
]
]
'8' => array (1) [
array (2) [
'name' => string (7) "Meister"
'url' => string (7) "meister"
]
]
]
(d() znajduje się przydatny funkcji debugowania z kint bibliotece, jak var_dump() lub print_r())
Należy zauważyć, że kolumna użyta do indeksowania tablicy zawsze będzie pierwszą kolumną wyników, więc można zmodyfikować instrukcję wyboru, aby wybrać kolumnę, która ma być wybrana. Zauważ także, że indeksowana kolumna zostanie usunięta z tablicy każdego wiersza; aby to obejść, możesz dodać kolumnę dwukrotnie do instrukcji select (tj. select id, brands.* from brands
itd.).
Udokumentowano tutaj więcej parametrów: http://php.net/manual/en/pdostatement.fetch.php, takich jak PDO :: FETCH_UNIQUE, aby upewnić się, że każdy indeks jest używany tylko raz.
$ st-> fetchAll (PDO :: FETCH_ASSOC | PDO :: FETCH_GROUP); To wykonało zadanie, dzięki za pomoc! –