usar symfony2 manager delete como symfony1 doctrine2

symfony1 - symfony2 - entity manager persist doctrine



Doctrine Entity findBy de muchos a muchos (1)

Tengo una relación de muchos a muchos entre productos y colores.

Lo que trato de hacer es encontrar productos por sus colores.

p.ej)

$colours = $em->getRepository(''Xxxxx/XxxxxBundle/Entity/Colour'')->findBy(array(''name''=>''red''); $products = $em->getRepository(''Xxxxx/XxxxxBundle/Entity/Product'')->findBy(array(''colours''=>$colours));

Esta es mi configuración de Yaml:

Xxxxx/XxxxxBundle/Entity/Product: type: entity manyToMany: colours: targetEntity: Colour joinTable: name: Product_Colour joinColumns: product_id: referencedColumnName: id inverseJoinColumns: colour_id: referencedColumnName: id

.

Xxxxx/XxxxxBundle/Entity/Colour: type: entity id: id: type: integer generator: strategy: AUTO fields: hex: type: string length: 320 name: type: string length: 320

El mensaje de error que recibo es:

Notice: Undefined index: joinColumns in /home/xxx/public_html/products/vendor/doctrine/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php line 1217

¿Alguien podría arrojar algo de luz sobre por qué esto no está funcionando?


Sé que esta es una vieja pregunta, pero si alguien más llega aquí a través de Google (como yo lo hice), tuve que evitar el findBy y usar DQL en el repositorio:

$products = $em->getRepository(''Vendor/Bundle/Entity/Product'')->findByColours($colours);

Y en el repositorio:

public function findByColours($colours) { $qb = $this->getEntityManager()->createQueryBuilder(); $qb ->select(array(''p'')) ->from(''VendorBundle:Product'', ''p'') ->join(''p.colours'', ''c'', ''WITH'', $qb->expr()->in(''c.id'', $colours)); $result = $qb->getQuery()->execute(); return $result; }

Es posible que deba cambiar la combinación en función de qué $ colores es. Esto supone que es una matriz de ID de color. Si se trata de una cadena, puede renunciar a in() o si se trata de una matriz de cadenas, deberá enlazar las cadenas como parámetros (consulte el siguiente enlace). Aclaración sobre expr () y tal es en los documentos Doctrine

No sé por qué se produce el Undefined index: joinColumns , pero este es un método para dejarlo de lado por completo. Con suerte, alguien puede aclarar el error, ya que mi solución agrega trabajo adicional a la relación Muchos a Muchos.