CGridView

Hola comunidad

busque pero no encontre

lo que quiero es usando zii.widgets.grid.CGridView

ordenar y buscar por un campo relacionado

osea

si tengo un "Libro" que tiene el campo idAutor

y tengo el "Autor" que tiene su nombre

quiero poder ordenar y buscar por nombre

seguro debe haber algun post sobre esto, pero no lo encuentro

gracias

Chequeaste esto?

[solved] Search() & Filter of a relations field through CGridView

[edit] 2 bis I, 2 bis II

gracias PoL

bien

entre este post http://www.yiiframework.com/forum/index.php?/topic/8784-cgridview-sort-columns#entry44210

y este otro http://www.yiiframework.com/forum/index.php?/topic/9083-solved-search-filter-of-a-relations-field-through-cgridview#entry45469

lo que hay que hacer es

  1. modificar el metodo search() del modelo



   $criteria->with=array('autor');



  1. crear un sort "a medida"



  $sort = new CSort();

  $sort->attributes = array(

   // para datos sin relacion

   'fecha'=>array(

      'asc'=>'t.fecha',

      'desc'=>'t.fecha desc',

    ),

//para datos relacionados

 'id_autor'=>array(

      'asc'=>'autor.nombre',

      'desc'=>'autor.nombre desc',

    ),

);



[edit] 2 bis I. compare




$criteria->compare('t.fecha',$this->fecha,true);

		$criteria->compare('autor.nombre',$this->id_autor,true);



[edit] 2 bis II. CActiveDataProvider




		return new CActiveDataProvider('Libros', array(

			'criteria'=>$criteria,

                        'sort'=>$sort,

		));




  1. en admin.php (o la vista que corresponda)



<?php $this->widget('zii.widgets.grid.CGridView', array(

	'id'=>'libro-grid',

	'dataProvider'=>$model->search(),

	'filter'=>$model,

	'columns'=>array(

		

		'fecha',

                array('name'=>'id_autor','sortable'=>'true','value'=>'$data->autor->nombre'),




saludos!!!