Ich arbeite mit Symfony 3.1 und Doctrine 2.5.Doctrine manyToMany gibt PersistentCollection anstelle von ArrayCollection zurück
ich ein Setup ManyToMany Beziehung, wie ich es immer tue:
manyToMany:
placeServices:
targetEntity: Acme\MyBundle\Entity\PlaceService
joinTable:
name: place_place_service
joinColumns:
place_id:
referencedColumnName: id
inverseJoinColumns:
place_service_id:
referencedColumnName: id
und Methoden hinzufügen zu meinem Entity
protected $placeServices;
...
public function __construct()
{
$this->placeServices = new ArrayCollection();
}
...
/**
* @return ArrayCollection
*/
public function getPlaceServices(): ArrayCollection
{
return $this->placeServices;
}
/**
* @param PlaceServiceInterface $placeService
* @return PlaceInterface
*/
public function addPlaceService(PlaceServiceInterface $placeService): PlaceInterface
{
if(!$this->placeServices->contains($placeService)) {
$this->placeServices->add($placeService);
}
return $this;
}
/**
* @param PlaceServiceInterface $placeService
* @return PlaceInterface
*/
public function removePlaceService(PlaceServiceInterface $placeService): PlaceInterface
{
if($this->placeServices->contains($placeService)) {
$this->placeServices->removeElement($placeService);
}
return $this;
}
Die Sache ist, wenn ich meine Einheit laden, Lehre eine PersistentCollection setzen in der Eigenschaft $ this> placeServices. Das klingt nicht wie ein großes Problem, außer wenn ich ein Formular erstelle, um diese beiden Entitäten zu verbinden (ein einfaches mehrfaches Kontrollkästchen mit symfony Formtyp), wenn $ form-> handleRequest() ausgelöst wird, Doctrine versucht die neuen Daten zu injizieren in meiner Entität und einen Fehler auslösen, wenn die Methode "get/add/remove" nicht verwendet wird ArrayCollection.
Ich kann meine Getter/add/remove-Methoden erzwingen, um die PersistentCollection in ArrayCollection umzuwandeln (mit der Methode unwrap), aber dann werden die Beziehungen nicht beibehalten.
Ich habe eine Problemumgehung gefunden, wenn ich fetch = "EAGER" auf die Beziehung die Eigenschaft mit ArrayCollection initialisiert wird, und die Beziehung beibehalten werden. Aber ich bin mir nicht sicher, ob es eine gute Lösung ist.
Thanks :)
Können Sie mit Ihrem Symfony-Formular und der genauen Fehlermeldung aktualisieren? – galeaspablo