Listar consulta compleja

Buenos días,

estoy intentando mostrar en el listado los resultados de una consulta compleja que devuelve un array de resultados. El problema es que el paginator espera una entidad y por tanto no puede mostrar los campos en el listado... La consulta en cuestión es esta:

SELECT zcp.id_zonas_codigos_postales, z.nombre, IF(COUNT(SUBSTRING(cp.codigo_postal,1,2))>1, SUBSTRING(cp.codigo_postal,1,2), cp.codigo_postal), SUBSTRING(cp.codigo_postal,1,2) AS prueba FROM api_zonas_codigos_postales zcp LEFT JOIN api_codigos_postales cp ON zcp.id_codigo_postal = cp.id_codigo_postal LEFT JOIN api_zonas z ON zcp.id_zona = z.id_zona GROUP BY z.nombre, prueba

(prueba es porque el GROUP BY del QueryBuilder no acepta el SUBSTRING)

He sobreescrito en el Controller el createListQueryBuilder para introducir la consulta en el objeto QueryBuilder, y como digo, devuelve un array de resultados.

¿Podríais decirme cómo puedo identificar los objetos para mostrarlos en el formulario?

Gracias, un saludo.

Respuestas

#1

Al final no entendí muy bien inicialmente creía que el problema era como paginar si te devolvía un array y no el object de la entidad, pero la pregunta final tiene que ver con formulario, si puedes explícate mejor para entender qué necesitas.

http://showmethecode.es/php/doctrine2/doctrine2-paginator/

Saludos.

#2

Hola Rober, gracias por tu respuesta... intentaré explicarme un poco mejor :)

Si nombramos a los valores devueltos de la siguiente manera...

SELECT zcp.id_zonas_codigos_postales as id, z.nombre as nombre, IF(COUNT(SUBSTRING(cp.codigo_postal,1,2))>1, SUBSTRING(cp.codigo_postal,1,2), cp.codigo_postal) as codigo, SUBSTRING(cp.codigo_postal,1,2) AS prueba FROM api_zonas_codigos_postales zcp LEFT JOIN api_codigos_postales cp ON zcp.id_codigo_postal = cp.id_codigo_postal LEFT JOIN api_zonas z ON zcp.id_zona = z.id_zona GROUP BY z.nombre, prueba

... el QueryBuilder, al ejecutarlo me devuelve algo como esto (omitimos el campo prueba): array:45 [▼ 0 => array:3 [▼ "idZonePostalCode" => 145144 "nombre" => "Zona X" "numero" => "*" ] 1 => array:3 [▼ "idZonePostalCode" => 139003 "nombre" => "Zona Y" "numero" => "15" ] 2 => array:3 [▼ "idZonePostalCode" => 132862 "nombre" => "Zona Z" "numero" => "02" ]

Me gustaría saber como configurar el easyAdmin para muestre en el listado los campos nombre y código.