Quiero obtener una matriz de valores de la columna de identificación de la tabla de subastas. Si este fuera un SQL sin formato, escribiría:
SELECT id FROM auction
Pero cuando hago esto en Doctrine y ejecuto:
$em->createQuery("SELECT a.id FROM Auction a")->getScalarResult();
Obtengo una matriz como esta:
array(
array('id' => 1),
array('id' => 2),
)
En cambio, me gustaría obtener una matriz como esta:
array(
1,
2
)
¿Cómo puedo hacer eso usando Doctrine?
php
doctrine-orm
Dawid Ohia
fuente
fuente
A partir de PHP 5.5, puede usar array_column para resolver esto
fuente
Una mejor solución es usar
PDO:FETCH_COLUMN
. Para hacerlo, necesita un hidratante personalizado:Agrégalo a Doctrine:
Y puedes usarlo así:
Más información: http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/dql-doctrine-query-language.html#custom-hydration-modes
fuente
La respuesta de Ascarius es elegante, ¡pero cuidado con el uso de la memoria!
array_map()
crea una copia de la matriz pasada y efectivamente duplica el uso de memoria. Si trabaja con cientos de miles de elementos de matriz, esto puede convertirse en un problema. Dado que el paso de tiempo de llamada de PHP 5.4 por referencia se ha eliminado, no puede hacerEn ese caso puedes ir con obvio
fuente
Creo que es imposible en Doctrine. Simplemente transforme la matriz de resultados en la estructura de datos que desee usando PHP:
fuente