Hola,
Tengo un problema mapeando una relación N:M, mis tablas son:
- perfil
- modulo
- modulo_perfil
Donde modulo_perfil es la tabla intermedia con las id de las otras tablas la cual me permite manejar esta relación que es: Un perfil puede tener muchos módulos y un módulo puede estar en muchos perfiles.
Eso es precisamente lo que no se como codificar, he puesto en ambos modelos lo siguiente:
$this->has_and_belongs_to_many('perfil'); en el modelo Modulo
$this->has_and_belongs_to_many('modulo'); en el modelo Perfil
Pero allí no se que más hacer, he manejado Propel como ORM, y allí el manejo es muy simple, tanto que se pueden hacer cosas de este tipo:
$perfil = new Perfil("descripcion del perfil");
$perfil->addModulo( new Modulo("nombre del modulo") );
Y automáticamente se almacenan los datos en las tres tablas correspondientes.
Para obtener los módulos de un perfil debería ser posible hacer esto:
$perfiles = Load::model('Perfil')->find();
foreach( $perfiles as $perfil ){
$modulos = $perfil->getModulos();
....
operaciones con los modulos de cada perfil, ya sea quitarlos o agregar nuevos...
....
}
La verdad no se si este framework tenga este nivel, he leído sobre una aplicación llamada treeGrid donde supuestamente hay algo similar, pero no la encuentro por ningún lado, la documentación es algo pobre en este aspecto.
Les agradecería muchísimo que me ayudaran con este problema, ya sea con algún ejemplo o sitio web porque realmente el framework me gusta.
Saludos
Comentarios
Ahora si utilizamos la función: has_and_belongs_to_many de la siguiente manera: