Persistir ManyToMany en los dos lados

Vamos a ver el modo de que las entidades relacionadas persistan, ManyToMany, desde los 2 sitios (owner y inversed)

Para persistir la entidad relacionada desde la entidad owner, no hay problema, todo funciona perfectamente, el problema viene cuando queremos persistir desde la entidad inversa (inversed).

Suponemos que tenemos 2 entidades, EntityOne.php (owner) y EntityTwo.php (inversed), y hay una relación ManyToMany entre ellas, y necesitamos que desde una Admin Class de SonataAdminBundle, podamos modificar la relación de los items de una y otra entidad.

Persistir ManyToMany

Lo primero es declarar las relaciones y las funciones propias de cada clase.

Entidad owner, EntityOne.php

Y ahora la entidad inversed EntityTwo.php:

Importantes, son las líneas 33 y 44, se utilizan las clases de la entidad owner, para persistir estos datos.

la Admin Class del owner, nada que destacar, EntityOneAdmin.php

También es muy importante la configuración, en la Admin Class, forzando a que ejecute las clases propias de la entidad inversed y no de la owner, EntityTwoAdmin.php

Esto es todo, ya podemos persistir las relaciones desde las dos Admin Class.

Referencias