Explica un poco mejor tal vez así se te pueda ayudar mas
-
Tienes creado un paciente.
-
Crear un link a los tratamientos de ese paciente como tal ¿desde donde piensas dirigirlo? de los botones que aparecen en las operaciones? en un botón creado por ti mismo?
Creo que lo que yo haría (teniendo en cuenta que tampoco tengo mucha experiencia en Yii) es lo siguiente debes crear una vista en el View del paciente por ejemplo llamada tratamientos.
Luego crearía dentro del controlador de pacientes un action algo parecido a esto
public function actionTratamientos($id)
{
$this->render('tratamientos',array(
'model'=>$this->loadModel($id),
));
}
Ya con esto me redirige solamente cuando yo pase un id, y para eso haremos lo siguiente en el campo de operaciones ya sea del view del paciente o el update del paciente
array('label'=>'Tratamientos del paciente', 'url'=>array('tratamientos', 'id'=>$model->id)),
Con esto cuando estés viendo los datos del paciente y le des a ese botón te redirigirá hasta sus tratamientos
Pero aun faltaría la estructura del view tratamientos, en mi caso no usaría un dataProvider sino mas bien un CGridView pero eso depende de cada quien, ademas no se hacerlo con el dataProvider jajaja.
La vista tratamientos debería quedar así.
<?php $this->widget('zii.widgets.CDetailView', array(
'data'=>$model,
'attributes'=>array(
array(
'label'=>'Nombre:',
'value'=>$model->nombre, <-aqui iria el nombre del paciente segun como lo tengas en el modelo.
),
),
)); ?>
<h3><?php echo 'Tratamientos del paciente'; ?></h3>
<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'Tratamientos',
'dataProvider'=>Tratamientos::model()->searchByPaciente($model->id), <-Este es el punto clave porque en el modelo de la tabla tratamientos deberemos crear esto.
'filter'=>Tratamientos::model(),
'columns'=>array(
array ('header'=>'Lapso','name'=>'lapso','value'=>'$data->lapso','type'=>'text'), <- aqui irian los datos del tratamiento, el lapso lo puse copiando de otro código que tenia y lo deje así, tu lo modificas a tus necesidades.
),
)); ?>
Por ultimo falta agregar el searchByPaciente($model->id) en el modelo de tratamientos y lo haría asi
public function searchByPaciente($id)
{
// @todo Please modify the following code to remove attributes that should not be searched.
$criteria=new CDbCriteria;
$criteria->compare('id',$id,true); <- si ves aquí estamos comparando el id de la base de datos con el $id que estamos pasando mas arriba, los campos de abajo debes cambiarlos segun tus necesidades.
$criteria->compare('dias',$this->dias);
$criteria->compare('lapso',$this->lapso,true);
$criteria->order = 'lapso ASC';
$criteria->compare('estatus', 1);
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
));
}
Espero que te sirva, a mi me sirvió para mostrar las vacaciones de un empleado en un sistema de recursos humanos y creo que es muy parecido a lo que tu necesitas.