Ayuda Con Relaciones En Cgridview

Muy buenas a todos, estoy creando un sistema medico, y necesito ayuda urgente, ya que me queda muy poco tiempo para la entrega de dicho sistema…

Basicamente dentro de el sistema manejo citas y consultas, quisiera saber como podria hacer para crear un link dentro de la vista detallada de un paciente la cual me envie a un historial de todas las citas o consultas de dicho paciente…

Agradeceria mucho su ayuda, ya que llevo pocas semanas trabajando con yii y php.

Considera usar un botón fuera del CDetailView (pero en la misma página) que sirva de link y llamado "Ver Historial". Eso es lo que hice en una aplicación bien similar a la que describes.

Si, estaba pensando en eso mismo , incluso no se si seria posible de una manera mas sencilla hacer que el boton me envie al admin de mi modelo de citas, simplemente con el ID del usuario ya seleccionado, y se filtre de esa manera…

El botón debe hacer una llamada a una acción (e.g. actionVerHistorial) en el controlador (e.g. PacienteController) y enviarle el ID del paciente como parámetro. Dentro de la acción debe ir el código que recibe el ID y llama a una función [e.g. getCitasDelPaciente($id)] en el modelo de las citas (e.g. Citas)y las despliega usando un CListView.

No creo que haga falta complicarse tanto. Se le puede pasar un parámetro a la acción y listo. Es decir, el botón de manda a una url .../paciente/verHistorial/1

Y en el controlador tendrías algo así:




public function actionVerHistorial($id) {


   $model = Historial::model()->findAllByAttributes(array('paciente_id'=>$id));


}



Con eso la acción te devolvería todo el historial de dicho paciente. A partir te ahí haces con ello lo que quieras. Renderizas una vista por ejemplo donde le pasas todos los datos.

Los nombres de la URL, modelo y eso me lo he inventado, pero te haces una idea de como va.

AlexInt, eso que escribiste es exactamente lo mismo que le quise decir al OP…

Quizá la diferencia es que en el paradigma MVC (si uno es estricto y consistente) el controlador le pide al modelo que haga el trabajo pesado de acceder a la base de datos y solamente hace de intermediario entre el modelo y la vista. El mantra es “vista esquelética/controlador delgado/modelo gordo”. Aunque admito que ocasionalmente he tomado estos atajos… ;)

Hay cosas que sí se suelen hacer de esta forma para ahorrar algo de trabajo, aunque esta precisamente es la forma en que trabaja Yii. Si te fijas en el actionUpdate, es exactamente así. Se le pasa una ID y con $this->loadModel($id) se carga el modelo. La diferencia es que eso busca por primary key y devuelve un resultado y esto por otro campo.