Gracias por responder! he tratado de llevarlo a mi código pero no me resultó xD lo que me complica mucho es que cargo el modelo de la tabla tiene_tratamiento y esta se relaciona con pieza_paciente, no tengo problemas para mostrar y filtrar los datos de pieza_paciente en el modelo de tiene_tratamiento, pero a la hora de sacar datos de la tabla Pieza, que no se relaciona directamente con tiene_tratamiento no me funcionó, trate de utilizar tus indicaciones pero no lo conseguí.
Gracias de todas formas, adjunto mi código por si acaso.
PD: Aunque no es algo tan grave en mi proyecto me gustaría saber como hacerlo (soy muy novato en esto de yii).
El encabezado y las rules
class TieneTratamiento extends CActiveRecord
{
public $pieza;
/**
* @return string the associated database table name
*/
public function tableName()
{
return 'tiene_tratamiento';
}
/**
* @return array validation rules for model attributes.
*/
public function rules()
{
// NOTE: you should only define rules for those attributes that
// will receive user inputs.
return array(
array('id_realizado, id_pieza_paciente, comentario', 'required'),
array('id_realizado, id_pieza_paciente', 'numerical', 'integerOnly'=>true),
// The following rule is used by search().
// @todo Please remove those attributes that should not be searched.
array('id_realizado, id_tiene_tratamiento, id_pieza_paciente, comentario, pieza', 'safe', 'on'=>'search'),
);
}
El método search
public function searchByTratamientoRealizado($id)
{
// @todo Please modify the following code to remove attributes that should not be searched.
$criteria=new CDbCriteria;
$criteria->compare('t.id_realizado',$id);
$criteria->compare('t.id_realizado',$this->id_realizado);
$criteria->compare('id_tiene_tratamiento',$this->id_tiene_tratamiento);
$criteria->compare('id_pieza_paciente',$this->id_pieza_paciente);
$criteria->compare('t.comentario',$this->comentario,true);
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
));
}
Las relaciones
public function relations()
{
// NOTE: you may need to adjust the relation name and the related
// class name for the relations automatically generated below.
return array(
'idRealizado' => array(self::BELONGS_TO, 'TratamientoRealizado', 'id_realizado'),
'idPiezaPaciente' => array(self::BELONGS_TO, 'PiezaPaciente', 'id_pieza_paciente'),
);
}
El mantenedor
$pieza = new Pieza();
$this->widget('zii.widgets.grid.CGridView', array(
'id' => 'PiezasAfectadas',
'dataProvider' => $modelTieneTratamiento->searchByTratamientoRealizado($model->id_realizado),
'filter' => $modelTieneTratamiento,
'columns' => array(
'comentario',
array(
'name'=>'pieza',
'value'=>'$data->idPiezaPaciente->idPieza->nombre_pieza',
'type'=>'text',
),
),
));
El action que carga la view
public function actionView($id) {
$modelTieneTratamiento = new TieneTratamiento('search');
if(isset ( $_GET ['TieneTratamiento'] ))
$modelTieneTratamiento->attributes = $_GET ['TieneTratamiento'];
$this->render('view', array(
'model' => $this->loadModel($id),
'modelTieneTratamiento' => $modelTieneTratamiento,
));
}