Ver Mensaje Individual
  #6 (permalink)  
Antiguo 11/05/2016, 01:30
hamramr
 
Fecha de Ingreso: marzo-2007
Mensajes: 59
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Problema Consulta con JOIN

Perdona hhs, me lo he estado mirando pero sigo sin entenderlo, debo ser duro de mollera.

En la documentación de la página de Doctrine habla de resultados "pure" y "mixed", ok, pero en esos ejemplos todos los registros (resultados) tienen la misma estructura. Quiero decir, para la consulta con JOIN:
Código:
$dql = "SELECT u, 'some scalar string', count(u.groups) AS num FROM User u JOIN u.groups g GROUP BY u.id";
Devuelve los resultados:
Código:
array
    [0]
        [0] => Object
        [1] => "some scalar string"
        ['num'] => 42
        // ... more scalar values, either indexed numerically or with a name
    [1]
        [0] => Object
        [1] => "some scalar string"
        ['num'] => 42
        // ... more scalar values, either indexed numerically or with a name
En los que cada elemento del array tiene la misma estructura: [0][1]['num']

Y en el ejemplo de luego:
Código:
SELECT u, UPPER(u.name) nameUpper FROM MyProject\Model\User u
Da la respuesta:
Código:
array
    array
        [0] => User (Object)
        ['nameUpper'] => "ROMAN"
    array
        [0] => User (Object)
        ['nameUpper'] => "JONATHAN"
    ...
Que también tiene la misma estructura: [0]['nameUpper']

Y luego, claro, lo tiene "fácil" para obtener los datos con un foreach:
Código:
foreach ($results as $row) {
    echo "Name: " . $row[0]->getName();
    echo "Name UPPER: " . $row['nameUpper'];
}
Pero en mi caso:
Código:
Array
(
    [0] => IP\RestBundle\Entity\Vehiculos Object
        (
            [id:IP\RestBundle\Entity\Vehiculos:private] => 1
            [idUsuario:IP\RestBundle\Entity\Vehiculos:private] => 
            [idVehiculosTipo:IP\RestBundle\Entity\Vehiculos:private] => 
            [matricula:IP\RestBundle\Entity\Vehiculos:private] => 4467CGH
            [seguro:IP\RestBundle\Entity\Vehiculos:private] => 
            [fechaProximaItv:IP\RestBundle\Entity\Vehiculos:private] => 
            [vehiculoPrincipal:IP\RestBundle\Entity\Vehiculos:private] => 
        )

    [1] => IP\RestBundle\Entity\VehiculosTipos Object
        (
            [id:IP\RestBundle\Entity\VehiculosTipos:private] => 1
            [descripcionVehiculo:IP\RestBundle\Entity\VehiculosTipos:private] => Furgoneta
        )

    [2] => IP\RestBundle\Entity\Vehiculos Object
        (
            [id:IP\RestBundle\Entity\Vehiculos:private] => 2
            [idUsuario:IP\RestBundle\Entity\Vehiculos:private] => 
            [idVehiculosTipo:IP\RestBundle\Entity\Vehiculos:private] => 
            [matricula:IP\RestBundle\Entity\Vehiculos:private] => 4468CGI
            [seguro:IP\RestBundle\Entity\Vehiculos:private] => 
            [fechaProximaItv:IP\RestBundle\Entity\Vehiculos:private] => 
            [vehiculoPrincipal:IP\RestBundle\Entity\Vehiculos:private] => 
        )

    [3] => IP\RestBundle\Entity\VehiculosTipos Object
        (
            [id:IP\RestBundle\Entity\VehiculosTipos:private] => 3
            [descripcionVehiculo:IP\RestBundle\Entity\VehiculosTipos:private] => Coche
        )

)
El índice 0 y 2 tienen la misma estructura, y el 1 y 3 entre ellos también.
Pero entonces no hay manera de que pueda utilizar un foreach para recorrerlos...

Repito, no se si es culpa mía (muy posiblemente así sea), pero no entiendo por qué no encuentro la manera de que esto muestre los resultados como yo quiero.

Una vez más, muchas gracias.

Un saludo.