Ver Mensaje Individual
  #2 (permalink)  
Antiguo 02/05/2009, 07:13
Avatar de Covids0020
Covids0020
 
Fecha de Ingreso: septiembre-2003
Ubicación: España
Mensajes: 217
Antigüedad: 20 años, 6 meses
Puntos: 1
Respuesta: consulta con zendframework sin "models"

Perdona... no he entendido del todo porqué quieres hacer esto pero bueno. No es una solución pero si estás haciendo esto:

Código PHP:
$this->view->load_all_artist(); 
No puede funcionar ya que es un método del controlador $this-> no de la vista $this->view, a no ser que lo hayas asignado antes así.
Es decir, sería:
Código PHP:
$this->load_all_artist(); 
Y, por cierto, solo una recomendación de acuerdo a los estándares de Zend, deberías anteponer a los atributos y métodos el guión bajo si son restringidos: protected o private. Son buenas costumbres eh? ;)
Código PHP:
private function _load_all_artist() {} $this->_load_all_artist(); 
Más cosas
No sé si has cogido el modelo de datos de algún lado... pero oye, los modelos de datos, bueno la lógica de negocio dicen, se supone que te los debes de crear tú.
Es decir, en models se usan objetos que represntan los datos, ya sean DB, tablas, etc... esto lo provee Zend y es... bufff, no usarlo es bastante ilógico pero bueno. En cualquier caso representan o suelen representar los datos en bruto.

En tu lógica de negocio, coges estos objetos y obtienes de ellos lo que te interese. Normalmente, si usas una DB puedes usar también los propios de Zend pero vamos.... que puedes crear 20.000 tipos de consultas diferentes en tu lógica. Simplemente se trata de usar la interfaz que Zend ya incorpora y que te ahorra, además de trabajo, disgustos y demás.

Es decir:
Este método, debería estar en tu lógica de negocio aplicada a los autores:

Código PHP:
Ver original
  1. // Autors.php
  2. // class Model_Albums {}
  3. public function load_all_artist() {
  4. /**
  5.  * Aquí deberías usar la propia interfaz de Zend pero como digo
  6.  * yo aún no la he usado y no pongo nada.
  7.  * Por ejemplo:
  8.  * $query  = "SELECT * FROM Album ";
  9.  * Esto ya lo hace Zend con... un $this->_tabla
  10.  * (que debería ser el objeto que representa tu tabla)
  11.  * $this->_table->select();
  12.  * Y así el resto. Repito que no sé, aún no lo he usado.
  13.  */
  14.             $query  = "SELECT * FROM Album ";
  15.             $query .= " WHERE active='1' ";
  16.  
  17.             $result = mysql_query($query);
  18.             if (!$result) {
  19.                 error_log("Loading All Category: " . mysql_error());
  20.             } else {
  21.                 $results = array();
  22.                 while ($row = mysql_fetch_assoc($result)) {
  23.                     $line = array();
  24.                     $line['title'] = $row['title'];
  25.                     $line['artist'] = $row['artist'];
  26.                     $line['actiu'] = $row['active'];
  27.                     //$line['link'] = '/browse/category/?id=' . $row['id'];
  28.  
  29.                     $results[] = $line;
  30.                 }
  31.             }
  32.  
  33.             return $results;
  34.         }

Y luego simplemente:
Código PHP:
Ver original
  1. $this->_model = new Model_Albums();
  2. $this->view->albums = $this->_model->load_all_artist();

Pero vamos... fetchAll() no hace precisamente eso???
Es que aún no he usado Zend_DB, uso XML actualmente, pero imagino que retorna todas las filas igual que haces tú.
Luego al resultado ya le aplicas el formateo que prefieras.... ¿no?


¿...o hay algún otro extraño motivo para no usar los modelos? oO
__________________
"La sabiduría comienza donde acaba el conocimiento". Yaris.
http://www.culturadigital.org

Última edición por Covids0020; 02/05/2009 a las 07:36