Cuando hacemos una consulta a la base de datos con Zend_Db, nos devuelve un objeto, con mucha info que pocas veces usamos. Generalmente nosotros queremos que nuestro metodo devuelva un array o un objeto, con las columnas de la consultas, y no mas que eso.
Si queremos que solo devuelva los resultados, en un array, tenemos una propiedad que nos soluciona esto.
El objeto que devulve fetchRow, y fetchAll, tiene una propiedad llamada toArray, que te devuelve solo las columnas del objeto en un array.
De esta manera, si nosotros quisieramos por ejemplo en nuestro modelo, el resultado de un fetchRow guardarlo en un Json, podriamos hacer lo siguiente.
-
-
<?php
-
class Usuarios extends Zend_Db_Table
-
{
-
protected $_name = ‘usuarios’
-
public function getRow($id)
-
{
-
$select = $this->select()
-
->where(‘usuario_id = ?’, $id);
-
return $this->fetchRow($select)
-
->toArray();
-
}
-
}
-
?>
-
Los que nos devuelve este ejemplo es un array con todas las columnas de nuestra tabla usuarios, donde el id del registro es igual al que le pasamos como parametro.





Hola Pablo, corrigeme si me equivoco, pero para lo que tu estas proponiendo existe la funcion fetchMode en Zend_Db.
Si lo que necesitas es que te devuelva es un array, solo necesitas cambiar el fetchMode, en el caso de tu ejemplo, seria:
$this->setFetchMode(Zend_Db::FETCH_ASSOC);
el codigo anterior haria que te retornada el resultado en un array associativo.
Puedes ver las demas constantes en el manual de Zend_DB en el sitio de Zend Framework.
La funcion que tu dices esta muy bien, pero me parecio que era necesario mencionar la otra forma, ya que no se si se te escapo o no la mencionaste a proposito.
Saludos
Ni, lo que yo buscaba es que solo me devuelva las columnas de la base, si yo hago lo que vos mencionas, me sigue llegando toda la info que no necesito. Con este metodo solo me devuelve el array con los resultados del fetchRow.
Probalo y fijate haciendo un print_r de lo que devuelve para que te des cuenta lo que digo.
demasiado básico y 0 aporte, y aparte aprende a usar un framework de verdad como symfony.
Haahah mentira son bromas, pero hay maneras y maneras de decir las cosas ¿no crees?
Jejeje. No era para que te enojes, siempre leo el blog, y es de los pocos que sobrevivieron a la limpieza del reader, realmente esta bueno. Pero me entusiasme con el titulo, y bue, nada.
Suerte!
ajajaj bueno ¿amigos?
Obvio suerte!
Hola pablito, vuelvo a visitar tu BLOG. Queria saber si me sabes como hacer una consulta, en donde se pueda utilizar el LIKE como en SQL.
Ya que no lo encuentro por ningun lado.
Abrazo
si queres usar ? podes hacer esto
$this->select()
->where ( ‘campo like ? ‘, ” ‘%$variable%’ ” )
pablo, estoy haciendo un ejercicio con arrayObject, en el indexController cargo la data con esta forma:
public function init()
{
$lista_usuarios = new ArrayObject();
$lista_usuarios->append(new Usuario(1, “jose”, “perez”));
etc….
pero cuando ejecuto tengo el error de que la clase Usuario no existe. Pregunto, debo crear un clase en Model con la inicializacion del array??
Hola @jose.
La clase tiene que estar en el path, para poder ejecutar el Autoload, sino esta, podes agregarlo, lo mas conveniente es que uses un namespaces mas claro. Por ejempo Model_Usuarios(), o podes incluir el archivo a mano con require_once.
Saludos.
gracias Pablo, tienes razon.