Holas, buen dia.
Llevo poco en zend asi que por favor tenganme paciencia xD
Tengo un modelo que extiende de Zend_Db_Table_Abstract, que es con lo que manejo la tabla categorias para hacer el CRUD.
Esta tabla tiene de campos el id, el nombre de la categoria, y el id de la categoria padre(para poder tener subcategorias).
Ahora a lo que voy, en la pantalla principal de administracion de la tabla tengo una tabla html en donde puedo visualizar todos los registros, y lo que quiero hacer es que en vez de mostrar el padre_categoria_id me muestre el nombre de la categoria padre. Por ej:
En vez de traer de la db esto.. (muestro uno pero la idea es traer todos los registros)
categoria_id = 3
padre_categoria_id = 1
nombre_categoria = categoria_tres
Me gustaria que de la db me traiga
categoria_id = 3
nombre_categoria_padre = categoria_uno
nombre_categoria = categoria_tres
Por medio de phpMyAdmin pude lograr la consulta que deseo, es esta:
Código MySQL:
Ver originalSELECT c1.categoria_id
, c2.nombre_categoria
AS nombre_categoria_padre
, c1.nombre_categoria
LEFT JOIN categorias c2
ON c1.padre_categoria_id
= c2.categoria_id
Por medio de Zend lo que pude lograr en codigo es:
Código PHP:
Ver original$select = $this->select(Zend_Db_Table::SELECT_WITH_FROM_PART);
$select->setIntegrityCheck(false);
$select->from(
array('c1' => 'categorias'), array('c1.categoria_id', 'nombre_categoria_padre' => 'c2.nombre_categoria', 'c1.nombre_categoria') )
->joinLeft('categorias AS c2', 'c2.categoria_id = c1.padre_categoria_id');
return $this->fetchAll($select);
Pero no logro conseguirlo =/
Se puede lograr esto con Zend_Db_Table_Abstract?? o tendria que mandarle el SQL con otra clase?
Note que al definir los campos con from() igual selecciona los que no puse, o sea si pongo que seleccione solo el id, tambien selecciona el nombre y los demas campos, porque hace eso?
Otra cosa, como puedo ver el sql generado? por ej, en codeigniter tenes $this->output->enable_profiler(true) que te mostraba todas las consultas a la db.
Gracias