Relaciones MANY_MANY

Hola,

Estoy intentando recuperar información adicional mediante una relación MANY_MANY en un AR pero no tengo claro como hacerlo. Os explico lo que tengo:

Hay una tabla event y una user. Para definir que usuarios asistirán a tal evento tengo la tabla event_user en la que guardo el código de evento y el de usuario para relacionarlos. Pero en esta tabla, aparte de los id de event y user para la relación, hay un campo extra ‘estado’ que no interfiere en la relación, es solo información adicional. La idea es que los usuarios solicitan asistir a un evento, y esta solicitud se puede aprobar, rechazar, etc.

Entonces, en el modelo Event tengo la siguiente relación:


public function relations(){

  return array(

    'asistentes' => array(self::MANY_MANY, 'User', 'event_user(event_id, user_id)'),

  );

}

y con esto al cargar un evento, tengo los usuarios que va a asistir al evento: $event->asistentes

Lo que no tengo ni idea es como conseguir para cada uno de los asistentes el campo ‘estado’ correspondiente de la tabla event_user.

Lo que seria interesante es que con $event->asistentes pueda ver los datos de cada asistente (esto ya lo hago) y que además pudiera saber en que estado esta su asistencia (por ejemplo: No se ha aceptado su solicitud de asistir, no ha pagado la entrada, ha venido, etc)

Espero que me puedan ayudar

¡Gracias!

Hola,

Una forma sería que crearas un modelo EventUser y definieras una relación entre éste y User (sería del tipo HAS_MANY a través de la clave foránea user_id). Luego, podrías implementar un método en User que aceptara como parámetro la clave primaria de un Event y que devolviera el estado de ese evento en particular buscando entre los EventUser asociados.

Un saludo,

s.