Explorar como Assoc
Para el manual: http://php.net/manual/en/pdostatement.fetchall.php
fetch_style
controla el contenido de la matriz devuelta como se documenta en PDOStatement :: fetch(). El valor predeterminado es PDO :: ATTR_DEFAULT_FETCH_MODE (que se predetermina a PDO :: FETCH_BOTH)
Para devolver una matriz que consta de todos los valores de una sola columna del conjunto de resultados, especifique PDO :: FETCH_COLUMN. Puede especificar qué columna quiere con el parámetro columna-índice.
Para recuperar solo los valores únicos de una sola columna del conjunto de resultados, bitwise-OR PDO :: FETCH_COLUMN con PDO :: FETCH_UNIQUE.
Devolver una matriz asociativa agrupada por los valores de una columna especificada, bitwise-OR PDO :: FETCH_COLUMN con PDO :: FETCH_GROUP.
Ese último bit es la clave. No parece estar completamente documentado (que pude encontrar), pero en lugar de PDO :: FETCH_COLUMN, puede combinar PDO :: FETCH_ASSOC con PDO :: FETCH_GROUP para lograr el resultado deseado:
$PDOstmt->fetchAll(PDO::FETCH_ASSOC | PDO::FETCH_GROUP)
Así , dados los datos arriba:
$stmt = $PDO_obj->prepare('select * from brands');
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC | PDO::FETCH_GROUP);
d($result);
resultados en:
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() es sólo una función de depuración práctico de la biblioteca Kint, como var_dump() o print_r())
Tenga en cuenta que la columna utilizada para indexar la matriz siempre será la primera columna en los resultados, por lo que puede modificar su declaración de selección para elegir la columna que desea. Y tenga en cuenta también que la columna indexada se eliminará de la matriz de cada fila; Para evitar eso, puede agregar la columna dos veces a su declaración de selección (es decir, select id, brands.* from brands
, etc.).
Hay más parámetros documentados aquí: http://php.net/manual/en/pdostatement.fetch.php, como PDO :: FETCH_UNIQUE para asegurarse de que cada índice se use solo una vez.
$ st-> fetchAll (PDO :: FETCH_ASSOC | PDO :: FETCH_GROUP); ¡Eso hizo el trabajo, gracias por la ayuda! –