Saludos amantes del Yii.
Hoy vengo con un problema que no me deja dormir trankilo y es lo siguiente. En mi proyecto controlo un sistema para la gestion de perros. Ahora en este sistema necesito filtrar en el admin los criadores y los padres de los perros. Donde por supuesto Criadores son un modelo aparte pero los padres pertenecen al mismo modelo de perros. Aqui muestro lo que tengo:
en el Modelo Perro:
Relaciones
public function relations()
{
return array(
'criador' => array(self::BELONGS_TO, 'Asociados', 'criador_id'),
'perroPadre' => array(self::BELONGS_TO, 'Perro', 'perroPadre_id' ),
);
}
Aqui mi funcion Search
public function search()
{
$criteria=new CDbCriteria;
$criteria->compare('id',$this->id);
$criteria->compare('nombre_per',$this->nombre_per,true);
$criteria->compare('sexo',$this->apellido,true);
//etc otros compare del modelo
$criteria->with=array('criador','perroPadre'); //aqui uno las dos relaciones que necesito para filtrar en mi vista admin
$criteria->addSearchCondition('LOWER(criador.ci)', strtolower($this->criador_id)); //aqui instancio el criador
$criteria->addSearchCondition('LOWER(perroPadre.cod)', strtolower($this->perroMadre_id), true); //aqui instancio el padre
en mi vista admin
<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'perro-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
array(
'name'=>'sexo_per',
'value'=> 'Perro::getSexoOption($data->sexo_per)',
'filter'=>array(1=>'Macho', 2=>'Hembra'),
),