![]() |
![]() ![]() |
![]() |
![]()
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. |
|
|
![]()
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.
|
|
|
![]()
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.
|
|
|
![]()
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.
|
|
|
![]()
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... |
|
|
![]()
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)
|
|
|
![]()
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?
|
|
|
![]()
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.
|
|
|
![]()
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!
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.09.2025 - 00:09 |