Symfony 3.1 ve Doctrine 2.5 ile çalışıyorum.Doctrine manyToMany return ArrayCollection yerine PersistentCollection
Ben kurulum hep yapmak gibi bir manyToMany ilişki:
manyToMany:
placeServices:
targetEntity: Acme\MyBundle\Entity\PlaceService
joinTable:
name: place_place_service
joinColumns:
place_id:
referencedColumnName: id
inverseJoinColumns:
place_service_id:
referencedColumnName: id
Ve ben varlık yüklediğinizde şey, doktrin bir PersistentCollection konur
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;
}
benim idareye yöntemleri eklemek $ this-> placeServices özelliğinde. $ Form-> handleRequest() tetiklendiğinde, bu iki öğeyi (symfony form türünde basit bir çoklu onay kutularını) bağlamak için bir form oluşturduğumda, yeni bir veriyi doktrinleştirmeyi denemek dışında, bu büyük bir sorun gibi görünmüyor. benim varlığımda ve/add/remove yöntemini al, ArrayCollection kullanmayan bir hata at.
Düzeltici/ekleme/çıkarma yöntemlerini PersistentCollection öğesini ArrayCollection'a dönüştürmek için (unwrap yöntemini kullanarak) zorlayabilirim, ancak yapılan ilişkiler kalıcı değil.
fetch = "EAGER" ayarlandığında, özellik ArrayCollection ile başlatılmış ve ilişkiyi sürdürdüğünüzde bir geçici çözüm buldum. Ama bunun iyi bir çözüm olduğundan emin değilim.
Teşekkür :)
Symfony formunuz ve tam hata mesajıyla güncelleyebilir misiniz? – galeaspablo