Symfony framework presenta un archivo de aplicación/consola que se puede ejecutar a través de php para realizar algunas tareas de mantenimiento. También permite a los usuarios ejecutar consultas DQL:Doctrine no me permite seleccionar campos específicos
# php app/console doctrine:query:dql --hydrate=array \
'SELECT u.id, u.nameFirst, u.nameLast FROM DatabaseBundle:User u'
array
0 =>
array
'id' => string '1' (length=1)
'nameFirst' => string 'jaroslav' (length=8)
'nameLast' => string 'rakhmatoullin' (length=13)
1 =>
array
'id' => string '2' (length=1)
'nameFirst' => string 'Båb Kåre' (length=10)
'nameLast' => string 'Ytrefoss' (length=8)
Observe que seleccioné tres columnas específicas. El problema que tengo es que una consulta similar me da un error cuando se unen dos tablas.
# php app/console doctrine:query:dql --hydrate=array \
'SELECT u.id , r FROM DatabaseBundle:User u JOIN u.roles r'
[Doctrine\ORM\Query\QueryException]
[Semantical Error] line 0, col -1 near 'SELECT u.id ,':
Error: Cannot select entity through identification variables
without choosing at least one root entity alias.
Las siguientes declaraciones de todo el usuario se unió a sus roles:
# php app/console doctrine:query:dql --hydrate=array \
'SELECT u, r FROM DatabaseBundle:User u JOIN u.roles r'
Obviamente, me falta algo.
¿Alguna idea? Apreciaría los enlaces a los documentos apropiados también (sobre este tema específico).
No entiendo el mensaje de error muy bien, pero recuerdo que experimentan los mensajes de error similares, y la solución de mi problema seleccionando r.id, por lo que creo que debe tratar de seleccionar más campos. – greg0ire
¿qué tal esto? ''SELECT u.id, r. * FROM DatabaseBundle: Usuario u JOIN u.roles r'' – jere
greg0ire eso es correcto. Creo que no puede seleccionar un solo campo Y un objeto "entidad" en una consulta como esa. – jere