usar symfony2 espaƱol entidades crear consultas como doctrine2 zend-framework2 zend-form

doctrine2 - symfony2 - find by id doctrine



Doctrine 2 ORM Zend 2 Forma muchos a muchos ejemplos (2)

K, así que descubrí cómo hacerlo finalmente después de darme cuenta de que el hidratador no era vinculante para las asociaciones y tuve que crear el enlace. Voy a poner una publicación de blog completa explicando pero en caso de que todavía estés atascado. Si quieres ver todo el código juntos, lo tengo en github (enlace) . Te estoy aprendiendo / desarrollando / limpiando activamente así que es un poco complicado

Básicamente, debe recopilar los modelos seleccionados, crear el enlace de asociación agregándolos a la entidad, luego persistir la entidad WITH the cascade add / del active en Doctrine (o hacerlo manualmente persistiendo el enlace antes de la entidad).

El ejemplo siguiente es un número de muchos a muchos entre mis publicaciones y categorías

Necesita tener la cascada activa en la propiedad de su entidad

/** * @ORM/OneToMany(targetEntity="CategoryPostAssociation", mappedBy="category", cascade={"persist", "remove"}) */ protected $category_post_associations;

Debe empujar el administrador de objetos desde su Formulario a sus conjuntos de campo

PostFieldSet

$categoryFieldset = new CategoryFieldset($objectManager); $this->add(array( ''type'' => ''DoctrineModule/Form/Element/ObjectMultiCheckbox'', ''name'' => ''categories'', ''options'' => array( ''label'' => ''Select Categories'', ''object_manager'' => $objectManager, ''should_create_template'' => true, ''target_class'' => ''OmniBlog/Entity/Category'', ''property'' => ''title'', ''target_element'' => $categoryFieldset, ), ));

y categoryfieldset solo tiene un cuadro de texto del Título.

En AddConction de mi PostController

public function addAction() { // Get your ObjectManager $objectManager = $this->getEntityManager(); //Create the form and inject the ObjectManager //Bind the entity to the form $form = new PostForm($objectManager); $post = new Post(); $form->bind($post); $request = $this->getRequest(); if ($request->isPost()) { $form->setData($request->getPost()); if ($form->isValid()) { /* * Get IDs from form element * Get categories from the IDs * add entities to $post''s categories list */ $element = $form->getBaseFieldset()->get(''categories''); //Object of: DoctrineModule//Form//Element//ObjectMultiCheckbox $values = $element->getValue(); foreach($values as $catID){ $results = $objectManager->getRepository(''OmniBlog/Entity/Category'')->findBy(array(''id'' => $catID)); $catEntity = array_pop($results); $link = $post->addCategory($catEntity); //Entity/Post ''s association table cascades persists and removes so don''t need to persist($link), but would be done here } $objectManager->persist($post); $objectManager->flush(); return $this->redirect()->toRoute( static::ROUTE_CHILD, array(''controller'' => static::CONTROLLER_NAME )); } } return array(''form'' => $form); }

Arriba si ve $ post-> addCategory ($ catEntity); esto lleva a que mi Entidad o Modelo administre el enlace (estaba devolviendo el enlace del enlace Quiero manejar la conexión en cascada manualmente)

Enviar

/** * Returns the created $link */ public function addCategory(Category $category){ $link = new CategoryPostAssociation(); $link->setCategory($category); $link->setPost($this); $this->addCategoryPostAssociations($link); return $link; }

¿Alguien tiene un ejemplo bueno y completo para la relación de muchos a muchos utilizando ZF2 y Doctrine 2, especialmente cuando se utiliza ObjectMultiCheckBox? Encontré este tutorial - https://github.com/doctrine/DoctrineModule/blob/master/docs/hydrator.md pero no explica cómo hacer una relación de muchos a muchos.