Guardar relación manytomany de objetos

179 views
Skip to first unread message

Luigi Garcia

unread,
Jun 22, 2012, 12:58:16 PM6/22/12
to symfony-es
Saludos.
Como puedo guardar una relación manytomany de dos objetos ya
existentes.
Tengo 2 entidades: Contactos y Productos

El contacto ya existe y los productos también.
Lo que deseo es asignar los productos al contacto, tengo ya la
consulta de los contactos y la consulta de los productos, ya los
muestro todo solo me falta la opción en mi controlador para poder
guardar dicha asignación en la tabla que se me crea en la base debido
a mi relación.

Muchas gracias de antemano.

wilx

unread,
Jul 2, 2012, 1:54:36 PM7/2/12
to symfo...@googlegroups.com
El modelo debe reconocer las relaciones y los datos que le quieres insertar.
envía como formas el formulario y el modelo de la base con el controlador para ver donde se genera el error

helysm

unread,
Jul 3, 2012, 2:14:42 AM7/3/12
to symfo...@googlegroups.com
verifica que no estes comentiendo el error de al intentar hacer una relacion muchos a muchos, el tenerlo de la siguiente manera 2 entidades de relacion uno a muchos y una relacion que las relacione.

este tipo de error es comun debido a que el proceso de ingeniera inversa que aplicas cuando partes de una base de datos ya creada no reconoce este tipo de relaciones, asi que lo que debes hacer es revisar que las doos entidades que tienen una relacion mucho a muchos no haya ninguna entidad de intermedio.

Guia te por el siguiente ejemplo

ahi te puedes guiar con el ejemplo que muestran, te  recomiendo la relacion muchos a muchos bidireccional, pero tu decidiras si la requieres o no.

Si encuentras la solución a tu problema no olvides postearla, es por el beneficio de todos en la lista.

Atentamente,

Hely Suarez Marin
Desarrollador PHP Symfony
Miembro del Semillero de Investigación y Desarrollo de Software Libre UFPS
No a la Piratería de Software !Sea Legal con Colombia! Usa Software Libre...
Cúcuta


El 2 de julio de 2012 12:54, wilx <wil...@gmail.com> escribió:
El modelo debe reconocer las relaciones y los datos que le quieres insertar.
envía como formas el formulario y el modelo de la base con el controlador para ver donde se genera el error

--
Has recibido este mensaje porque estás suscrito al grupo "symfony-es" de Google Groups.
Para publicar en este grupo, envía un email a symfo...@googlegroups.com
Para darte de baja, envía un email a symfony-es+...@googlegroups.com
El resto de opciones puedes encontrarlas en http://groups.google.com/group/symfony-es?hl=es

wilx

unread,
Jul 23, 2012, 3:33:08 PM7/23/12
to symfo...@googlegroups.com, Luigi Omar Garcia Vargas
Hola Luigi, en respuesta al correo que me enviaste te puedo comentar:

Como estas realizando un "INSERT" personalizado con datos que ya tienes almacenados (las llaves foráneas) para agregarlas al registro que estas agregando no basta con tener los id ya que aunque esos sean las llaves forarneas lo que doctrine espera que le asocies son las entidades que conrresponden a esos id.

En un ejemplo seria mas o menos asi:

$dato_# corresponden a los valores recibidos desde tu controlador
$v_fk_# corresponden a las entidades que asociaras al nuevo registro


$v_fk_1 = $this->getEntityManager()->getRepository('modeloBundle:ScdEntidad1')->find($dato_1); //llave foranea 1
$v_fk_2 = $this->getEntityManager()->getRepository('modeloBundle:ScdEntidad2')->find($dato_2); //llave foranea 2


//... después de haber comprobado la existencia de las llaves foráneas procedes a asignarle los valores a tu nuevo registro 

$entity = new ScdEntidad();
$entity->setCampo($datos_lo_que_sea); //Cualquier otro dato que registras
$entity->setFecha(new \DateTime('now')); //Cualquier otro dato que registras 
$entity->setProducto($v_fk_1); //asociamos la llave foránea 1 
$entity->setcategoria($v_fk_2); //asociamos la llave foránea 2
$em->persist($entity);
$em->flush();


Reply all
Reply to author
Forward
0 new messages