Relaciones de modelos y acceso a los datos

Viendo los consejos avanzados y casi sin ganas que he recibido en el chat, vuelvo a aclarar que estoy empezando en todo esto.

Para ubicarlos un poco: tengo un modelo usuario y un modelo juego, tienen una relacion many-to-many y por esto tengo una tabla tbl_usuario_juego además de tbl_usuario y tbl_juego.

Dentro del modelo de Usuario tengo la siguiente relación:


'jugador' => array(self::MANY_MANY, 'Juego', 'tbl_usuario_juego(id_usuario,id_juego)'),

y dentro del modelo Juego:


'jugador' => array(self::MANY_MANY, 'Usuario', 'tbl_usuario_juego(id_usuario,id_juego)'),

Lo que quiero hacer es mostrar en el view.php del usuario todos los juegos de un determinado estado (1=empezado, 2=suspendido, …) a los que el usuario se ha inscripto.

Otra cuestión es saber dentro del view.php del juego si el usuario está inscripto para unirse al juego o para borrarse del mismo. Al anotarse/borrarse de un determinado juego, necesito hacer un update en tbl_usuario_juego y modificar un parámetro llamado ‘cupo’ (cantidad restante de jugadores) en tbl_juego.

Espero que se entienda, me vendría muy bien una ayuda.

Gracias

Bueno, va un intento de ayuda (no tested )

para mostrar en el view del usuario solo los juegos a los que se inscribió y que están en un determinado estado deberías poner en el criteria la opcion together , en el with poner la relación y la condición ponerla sobre la relación

respecto a la otra cuestión, lo puedes manejar todo en las acciones del controlador

por ejemplo




$inscripto = // este dato puedes enviarlo desde el controlador (del view) como parametro en el render

if ($inscripto)

       CHtml::link('Borrarme',array('juego/borrarme', 'id'=>$model->idJuego));

else

       CHtml::link('Borrarme',array('juego/inscribirme', 'id'=>$model->idJuego));



si necesitas mas detalles, no dudes en consultar

Gracias Horacio!

Estoy bastante complicado con otras cosas en este momento, más adelante probaré lo que escribiste y comento mis resultados.

Saludos

No entendí… no tengo idea de como se maneja esto.