Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SF][SF2]Relacja ManyToMany, Dodatkowe pole w tabeli łączącej
mimol
post
Post #1





Grupa: Zarejestrowani
Postów: 247
Pomógł: 5
Dołączył: 10.12.2007

Ostrzeżenie: (0%)
-----


Witam.
Mam dwie tabele: Movie, Media, połączone są relacją ManyToMany, więc tak naprawdę mam jeszcze tabele movie__has_media.
Chciałbym aby w tabeli łączącej(movie__has_media) Było dodatkowe pole type(będzie przechowywać typ obrazka).
Nie chcę mieć tego w tabeli media(nie zawsze typ obrazka jest wymagany)
Czy da się takie coś osiągać. Jeśli tak to jak?
Jak potem wyświetlić typ obrazka?(Nie jest on przecież ani w tabeli media, ani w tabeli movie)
===================
Domyślam się, że można zrobić jeszcze
Movie , movie_has_type, movie_has_type_has_media, media, Jednak uważam to za gorsze rozwiązanie....
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
HansKlops
post
Post #2





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 8.01.2013

Ostrzeżenie: (0%)
-----


Witajcie,

mam problem właśnie z takim rozwiązaniem, a konkretnie z Sonatą, której używam do admina. Używając przykładu podanego w tym wątku chciałbym przy edycji Movie mieć możliwość edycji Mediów powiązanych z tym konkretnym Movie wraz z edycją dodatkowych pól trzymanych w tabeli łączącej.
Zakładam, że definicje w Doctrine mam dobrze, tabele się generują poprawnie kiedy użyję doctrine:schema:update.

Kod w MovieAdmin:

Kod
    protected function configureFormFields(FormMapper $formMapper)
    {
        $formMapper
            ->add('name')
            ->add('media', 'sonata_type_collection', array(
                'by_reference' => false
            ), array(
                'edit' => 'inline',
                'inline' => 'table',
                'sortable'  => 'sortOrder',
            ))
      ;
    }

Podczas edycji Movie wyświetla się wszystko OK, jest lista powiązanych mediów wraz z dodatkowymi polami, problem jest gdy chcę dodać nowe media. Klikam na przycisk "add new" znajdujący się pod listą, wpisuję co trzeba, klikam "save" i dostaję błąd:
Cytat
Entity of type MySite\MyBundle\Entity\MovieHasMedia is missing an assigned ID for field 'movie'. The identifier generation strategy for this entity requires the ID field to be populated before EntityManager#persist() is called. If you want automatically generated identifiers instead you need to adjust the metadata mapping accordingly.

Jak sobie z tym poradzić? Niedawno zacząłem przygodę z SF2 i mnie zblokowało. (IMG:style_emoticons/default/sciana.gif)

Dzięki wielkie za każdą pomoc.

Ten post edytował HansKlops 8.01.2013, 00:54:08
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 27.12.2025 - 11:34