tablas con relaciones N:M usando has_and_belongs_to_many

171 views
Skip to first unread message

Noemi Barahona

unread,
May 8, 2013, 12:53:40 PM5/8/13
to kum...@googlegroups.com
Alguien puede tomarse un tiempo y ayudarme con unas tablas con relaciones N:M plz.. soy nueva en kumbia..!! la explicación de http://wiki.kumbiaphp.com/Asociaciones#Tiene_y_pertenece_a_muchos_.28has_and_belongs_to_many.29 no me ayudado mucho.:/

tengo mis tablas y modelos usuario y municipio y las funciones 
class Usuarios extends ActiveRecord{
  protected function initialize(){
$this->has_and_belongs_to_many('municipios','fk: usuarios_id','key: municipios_id', 'through: municipios_usuarios');
 }
}

class Municipios extends ActiveRecord{
  protected function initialize(){
$this->has_and_belongs_to_many('usuarios','fk: municipios_id','key: usuarios_id', 'through: municipios_usuarios');
  }

  public function listar(){
return $this->find();
  }
}

tengo un dbSelect para que al dar de alta los usuarios, me despliegue el listado de municipios. 
según yo puse esto:

<?php echo Form::dbSelect("municipios_usuarios.municipios_id","nombre",array("municipios","listar"),"Seleccione");?>

Ahora como le hago para insertar datos en la tabla municipios_usuarios (que seria la  tabla detalle), el id del municipio que seleccionó y el id del usuario que dio de alta? 
Porque esto obviamente no me funciona :/

HenrySAM

unread,
May 8, 2013, 2:50:14 PM5/8/13
to kum...@googlegroups.com
Hola!

Sin entrar a la parte de cómo se programaría, no se si el framework te ayudará con esto que necesitas. Viéndolo desde la base de datos te recomiendo que intentes romper la relación muchos a muchos que existe, creo que así te puede facilitar mapear como objetos a KumbiaPHP.

Iván Meléndez

unread,
May 8, 2013, 4:33:21 PM5/8/13
to kum...@googlegroups.com
Hola! intenta romper la relacion N:M, es lo más lógico se puede hacer, sea que estés con un fw o no.

usuario 1 -> M usuario_municipio M <-1 municipio

Una vez rota esa relación N:M puedes realizar las operaciones que necesites.

Este es un ejemplo que he realizado y funciona perfectamente (lo hacabo de probar)

Tabla: perfil (id, perfil)
Tabla: recurso (id, recurso)
Tabla: recurso_perfil (id, perfil_id, recurso_id)

modelo perfil

Load::models('recurso', 'recurso_perfil');

class Perfil extends ActiveRecord {

    protected function initialize() {
        $this->has_and_belongs_to_many('recurso');   
    }

}

En el controller

Load::models('perfil')

class Perfil extends AppController {

    public function index() {
        $perfil = new Perfil();
        $this->perfil = $perfil->find_first(1);
    }

}

En la vista perfil/index.phtml


<?php echo 'Perfil: '.$perfil->perfil; ?>

<?php $recursos = $perfil->getRecurso(); ?>

<?php foreach($recursos as $recurso) : ?>
    <?php echo "<p>$recurso->recurso</p>"; ?>
<?php endforeach; ?>

Si tienes dudas pásate por el irc que con gusto te ayudaremos.

PD: ayer en el irc vi tu comentario pero no estaba en el pc.



--
--
Viva KumbiaPHP Framework!
http://www.kumbiaphp.com/
Ha recibido este mensaje porque está suscrito a Grupo "KumbiaPHP Framework" de Grupos de Google.
Para obtener más opciones, visita este grupo en http://groups.google.com/group/kumbia?hl=es.
---
Has recibido este mensaje porque estás suscrito al grupo "KumbiaPHP Framework" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a kumbia+un...@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
 
 

Reply all
Reply to author
Forward
0 new messages