Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SF][Symfony2] Podejście do sortowania encji
Foxx
post
Post #1





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

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


W jaki sposób w Symfony2 rozwiązuje się problem sortowania w przypadku encji połączonych relacją?
Konkretnie: mamy książki i katalogi w relacji jeden do wielu. Książki są przypisane do katalogów i chciałbym książki posortować w każdym katalogu inaczej.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Symfony tego w żadnej sposób nie rozwiązuje, ponieważ Symfony ma niewiele wspólnego z bazami danych. Tym zajmuje się u Ciebie zapewne Doctrine. W DQL-u Doctrine'a za sortowanie odpowiada klauzura ORDER BY, dokładnie tak samo jak w SQL-u.
Go to the top of the page
+Quote Post
Foxx
post
Post #3





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

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


Ale wiesz, nie miałem na myśli tej części problemu sortowania, chodzi mi raczej o to, że nie wiem gdzie w opisanej sytuacji umieścić pole "position" skoro do dyspozycji mam tylko encje Ksiazka i Katalog, a chcę posortować dla każdego katalogu inaczej. W SF 1.x umieściłbym takie pole w tabeli relacyjnej przechowującej informacje o powiązaniach książek z katalogami, a w SF2 chyba nie ma takiej możliwości bo tabela relacyjna powstaje automatycznie, nie tworzę jej explicite.
Go to the top of the page
+Quote Post
Crozin
post
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Jeżeli relacja zawiera jakieś dodatkowe dane (tutaj: pozycja) powinieneś skorzystać z podwójnej relacji jeden-do-wielu.
Go to the top of the page
+Quote Post
Foxx
post
Post #5





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

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


Czy masz na myśli OneToMany Bidirectional?
Korzystam z takiej relacji, ale nie wiem gdzie mógłbym tam umieścić dodatkową informację o pozycji. W takiej relacji tabela relacyjna tworzona jest automatycznie i wygląda to na pierwszy rzut oka tak, że nie mogę wpłynąć na jej kształt...
Go to the top of the page
+Quote Post
Crozin
post
Post #6





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Nie, pisałem o podwójnej relacji, a nie relacji dwukierunkowej. Chociaż obie relacje będą w tym przypadku dwukierunkowe.
Kod
Katalog (id, nazwa) <--> KatalogKsiązka (id, id_katalog, id_ksiązka, pozycja) <--> Książka (id, nazwa)
Go to the top of the page
+Quote Post
Foxx
post
Post #7





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

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


Czyli można powiedzieć, że dopóki tablica relacyjna służy tylko do przechowania informacji o relacji to mogę pozwolić żeby zajmował się nią automatycznie Doctrine/Symfony, a jeżeli chcę tam umieścić dodatkowe pola to samodzielnie tworzę encję, żeby móc wpływać na jej kształt?
Go to the top of the page
+Quote Post
Crozin
post
Post #8





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Dokładnie tak. W momencie, w którym potrzebujesz jakiś dodatkowych danych przy relacji pomiędzy encjami powinieneś zrezygnować z pojedynczej relacji ManyToMany na rzecz kombinacji ManyToOne + OneToMany z pośredniczącą encją pomiędzy.
Go to the top of the page
+Quote Post
Foxx
post
Post #9





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

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


Wielkie dzięki!
Go to the top of the page
+Quote Post

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: 14.09.2025 - 22:38