Como trabajar con vistas de la base de datos

Hello!

tengo varias tablas y las "aplane" en una vista de la base de datos

ahora?

con el shell no puedo crear el model

y si uso




$models=Yii::app()->db->createCommand("SELECT * FROM `V_regprof_listado`")->queryAll();



y




<?php foreach($models as $n=>$model): ?>

   <tr>    

      <td>

        ........

        <?php echo CHtml::encode($model->apellido); ?>

        ..........

      </td>

  </tr>



no me muesta datos, pero si me crea las filas

adjunto imagen de la pantalla

controller




      public function actionRep_listado_prof() {

          $models=Yii::app()->db->createCommand("SELECT * FROM `V_regprof_listado`")->queryAll();

          //$cantidad=Yii::app()->db->createCommand("SELECT count(1) FROM `V_regprof_listado`");

          

          $cantidad=100;


        $criteria=new CDbCriteria;


        $pages=new CPagination($cantidad);

        $pages->pageSize=self::PAGE_SIZE;

        $pages->applyLimit($criteria);


        $this->render('rep_listado_prof',array(

            'models'=>$models,

            'pages'=>$pages,

            

        ));




      }




en el foreach hace un print_r($model) a ver que te tira. (A lo mejor

$model->apellido

no es algo que este en $model)

Sino, en el query pone en lugar de "select * " algo como

"select V_regprof_listado.algun campo AS apellido, V_regprof_listado.otro_campo AS nombre …"

Y asi…

$model[‘nombre’] funcionó

pero no me anda el pager

me muestra todo en vez de solo 10 registros

alguna referencia de como trabajar con Vistas?

saludos y gracias

Si, cuando haces un queryAll te devuelve un array con los datos pedidos a la base ya que no estas usando AR. Para eso debes utilizarlo como si fuese PHP común y demás…

Mirá esta página para más info…

http://www.yiiframework.com/doc/guide/database.dao

Saludos,

Sebas

Me olvidé de decirte, para el pager tenés que hacerlo a mano ya que el pager de Yii funciona con AR, y no con DAO directo

Fijate que además tendrías que hacer un count de la base (que también se hace con el uso del pager) y usar LIMIT y OFFSET en tu pedido a la base

Saludos,

encontre esto y me sirvio

http://www.yiiframew…iews-in-models/

el shell no genera el model en forma completa, hay que "arreglarlo"

hay que agregar





public function primaryKey()

    {

            return 'id';

    }




donde id es la "clave primaria" de la vista