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
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




To co chcesz osiągnąc to jedna z "bolączek" SF2, a konkretniej używanej przez ten FW Doctrine2. Da się osiągnąć poprzez ręcznie utworzoną encję tabeli łączącej na zasadzie takich relacji:
Pierwsza tabela: OneToMany z łączącą,
Druga tabela: OneToMany z łączącą
Łącząca tabela: ManyToOne z pierwszą i ManyToOne z drugą

Wtedy w łączącej możesz sobie dawać różne własności, takie jak wspomniany type.

Więcej dokładniejszych opisów co i jak masz w google przy: many to many with parameter.

EDIT: Ogólnie dla Twojego przypadku zastanawiałbym się, czy jednak nie pchnąć tego do Media z opcją ustawienia type na null. Naprawdę mniej babrania się z tym. Łączeniowa z parametrem w SF2 nie jest fajna do obsługi z racji konieczności pisania wielu dodatkowych metod do obsługi, najczęściej w klasach repozytoriów dla danej encji. Media z reguły sam narzuca jakiego jest typu, nie da się tego wyrzucić poza nawias. Zawsze ma ścisłe przypisanie. Gdyby bylo inaczej, miało by to sens. Przykład? Aplikacja wielojęzyczna. Różni userzy mogą mieć kilka po języków przypisanych, więc jest to typowe many-2-many. Mają jednak określony język defaultowy. Gdyby był jeden dla wszystkich w Languages bezpośrednio, pakowalibysmy to tam do srodka. Ale kazdy user może sobie go na dowolny inny spośród dostępnych ustawić, co z automatu ustawiało by go wszystkim innym userom w systemie (IMG:style_emoticons/default/wink.gif) Albo więc informację o defaultowym pakujemy do Usera bezpośrednio, albo tworzymy tabelę łączącą z językami i tam jako parametr jednego ustawimy na true, co sprawi, iż staje się domyślnym.
Powód edycji: [thek]: Mała uwaga
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: 24.12.2025 - 15:10