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
cyberpol
(Cyberpol 777)
2
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
- modificar el metodo search() del modelo
$criteria->with=array('autor');
- 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,
));
- 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!!!