Nueva pregunta

Pregunta:

Fecha: 21-04-2015 09:45:57 (En Español)

Multiples consultas[Resuelta]

Hola a todos, miren trabajo con propel orm, estoy haciendo el metodo de editar. De la vista mando para el controllador todos los id de los elementos que quiero editar, y entonces en el controllador buscao con propel cada uno de los usuarios según los id. (No es exactamente en el controlador donde lo hago, es en el model pero vamos a asumir que es ahí para no hacer el camino mas largo). Entonces el codigo del metodo editar quedaría de la siguiente forma:
 function Editar()
    {
        $listaIds=isset($_POST['i']) ? $_POST['i'] : array();
        $query=new UsuarioQuery();
        
        $listaUsuarios=array();
        foreach($listaIds as $id)
        {
            $listaUsuarios[] = $query->filterById($id)->findOne();
        }
        
        //ahora paso la lista con los usuarios a la vista para ser mostrada.
    }


Este es mi código, lo cierto es que solamente me recupera de la base de datos el primer usuario, todos los demás los muestra como null, para que me recupere todos los usuarios como quiero tengo que crear la variable "$query" dentro del foreach, algo que no me parece correcto, el objeto lo creo una vez y lo consulto cuantas veces necesite, creo yo, o sea, el foreach quedaría de la siguiente manera:
        foreach($listaIds as $id)
        {
            $query=new UsuarioQuery();
            $listaUsuarios[] = $query->filterById($id)->findOne();
        }


Amigos, yo se que hay mucho talento por aqui, y necesito de él, les agradecería cualquier ayuda suya.

Muchas gracias.
Etiquetas: MySQL - ORM - ORM Propel - Pregunta - Query - SQL Votos: 1 - Respuestas: 2 - Vistas: 20 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 28-04-2015 06:22:46 Hola Jaime, si bien yo he trabajado con Doctrine y no con Propel, entiendo que lo que quieres hacer es obtener un array de objetos del tipo "Usuario" en una sola consulta, no?

    En tu segundo script, si bien logras obtener un array de objetos "Usuario", estas haciendo consultas separadas, por lo que ejecutarás tantas consultas como usuarios quieras recuperar.

    Creo que lo que puedes hacer para obtener una colección de objetos "Usuario" hidratados en una sola consulta es lo siguiente:

    $query=new UsuarioQuery()
    $listaUsuarios[] = $query->filterById(array(123, 456))->find();


    Pruebalo y luego me cuentas.

    Saludos,
    Fernando
      Votos: 1 - Link respuesta
     
  • Fecha: 29-04-2015 05:52:01 Estás en lo cierto Fernando, muchas gracias, no me acordaba de que se podía filtrar mandando un arreglo de ids.

    Gracias.
      Votos: 0 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
 
frjcbbae garagebible.com