Wpis z mikrobloga

Mirki, potrzebuję pomocy. Trzeci dzień próbuję rozwiązać pewien problem i w żaden sposób mi się to nie udaje.

Powiedzmy mam 2 encje: Post i Tag. W encji Tag, w bazie danych mam zapisane tagi. Mogę je dodawać, mogę je usuwać. Każdy Post może mieć wiele tagów, ale tylko tych z listy tagów. Nie ma żadnego dynamicznego dodawania czy usuwania tagów. Tak więc zrobiłem to relacją ManyToMany. jednak przy próbie aktualizacji Posta, rzucało wyjątek: Duplicate key entry. Ogólnie chodzi o to, że podczas aktualizacji, stare rekordy nie były usuwane, a była próba wstawienia takiego samego rekordu jaki już istnieje.
No dobra. Zmieniam relację. Robię OneToMany - ManyToOne, z encją posrednią PostHasTag. No i teraz mam kolejny problem, bo nie wiem w jaki sposób zrobić formularz, gdzie będę miał listę tagów z bazy danych i bedę je mógł wybierać (checkbox). Próbowałem już robić:

$builder->add('posthastag', EntityType::class);
$builder->add('posthastag', CollectionType::class);
$builder->add('posthastag', ChoiceType::class);
Kolega mi podesłał jakiś przykład z Data Transformer, ale nie jest mi do końca zrozumiały i to co mam dostępne w dokumentacji Symfony też niespecjalnie mi pomaga. Dobrych przykładów w internecie też nie znalazłem.

Może mi ktoś podpowiedzieć w jaki sposób mam to zaimplementować? Wystarczy jakiś przykład…

#php #symfony #symfony2 #symfony3 #doctrine
  • 2