Wpis z mikrobloga

Czuję się jak ostatni lamus :( Jak noobek mam problem z utworzeniem encji.

Encja zawiera relację m2m, jednostronnie.

/**
* @ORM\ManyToMany(targetEntity="ProductFeature")
* @ORM\JoinTable(name="product__products_features",
* joinColumns={@ORM\JoinColumn(name="product_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="icon_id", referencedColumnName="id")}
* )
*/
private $features;

Jest wpięta w formularz, tam siedzi kolekcja. Kolekcja jest ładnie handlowana na froncie. Kontroler wchodzi w handleForm i... w ArrayCollection (na etapie $form->isValid() czyli kolejna linijka) pojawia się jakaś pusta tablica z dupy (screenshot). Przez nią leci exception:

Expected value of type "Doctrine\Common\Collections\Collection|array" for association field "ColoursFactory\AppBundle\Entity\Product#$features", got "array" instead.


W necie piszą że to coś z mapowaniem, ale nie wydaje mi się. Wygląda to prawilnie. Nie wiem jak to ugryźć. Za dużo stepów żeby debugować krok po kroku.

#programowanie #php #symfony2 #symfony3 #symfony #doctrine
lewakanieszkoda - Czuję się jak ostatni lamus :( Jak noobek mam problem z utworzeniem...

źródło: comment_0d7sHdsRBMFtOyLJ7DOjRPbnINGady7d.jpg

Pobierz
  • 8
  • Odpowiedz
@lewaka_nie_szkoda:
jeżeli to formularz a to pole to kolekcja to spr. czy to pole ma by_reference na false
sprawdź czy doctrine:schema:validate nie zwraca jakichś błędów, jeżeli tak to popraw
jeżeli nadal nie to sugeruję wstawienie kodu z obu właściwości z mapowaniem (z obu encji) plus ciała setterów geterów
  • Odpowiedz
@lewaka_nie_szkoda: Problem jest w tym, że zamiast kolekcji obiektów z relacji many-to-many masz tablice idków pasujących do obiektów. Często o tym zapominam jak robię many-to-many a potem się pałuje. Rozwiazanie to data transformer z repozytorium który zmienia te idki w obiekty. Wtedy ten błąd znika. ;)
  • Odpowiedz