Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 375 Pomógł: 20 Dołączył: 28.07.2006 Ostrzeżenie: (0%)
|
Istnieją następujące tabele w bazie:
FILMY - ID - tytul AKTORZY - ID - film (klucz obcy do FILMY.ID) - imie Załóżmy następujące klasy:
Chcę napisać kod zgodny z przyjętymi zasadami i jednocześnie czytelny. Powstają pytania: 1. Jak nazwać kolumny, które są kluczami obcymi? Najłatwiej nazwać kolumnę film, ale nie wszystkie ORM sobie z tym poradzą ze względu na konflikt nazw.
2. Czy do klasy encji powinien trafić także ID powiązanego rekordu?
Zamiast funkcji można użyć także adnotacji lub pliku konfiguracyjnego. Przykład wyżej ma pole $filmid, ale do relacji odwołujemy się poprzez metodę magiczną __get(). Czy to zbyt nie komplikuje kodu? Może większość bibliotek ORM od razu pobiera powiązane encje n:1. Czy w powyższym przypadku po odwołaniu do $filmid (lub $film z poprzednich przykładów) powinniśmy otrzymać ID filmu czy obiekt klasy Film? PS. Co myślicie o potworkach typu Film::find()? |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%)
|
Nie, nie potrzebujemy. Wręcz nie powinniśmy się zajmować tym jak powiązane są ze sobą obiekty w naszej hierarchii. Klucze obce to wewnętrzny mechanizm bazy danych, który nie powinien być odzwierciedlony w modelu obiektowym. Co innego ID pojedynczego obiektu - to już jest zwykła właściwość obiektu.
W Doctrine, które bardzo, bardzo mocno bazuje na JPA (Java) stosuje się model DataMapper oraz kieruje się zasadą, którą nazwałbym "pierwszeństwem modelu obiektowego, nad bazodanowym". IMHO jak do tej pory, najlepsze rozwiązanie jakie wymyślono w kwestii ORM-ów. |
|
|
|
WebCM [ORM] Jak prawidłowo powiązać encje? 3.12.2013, 00:44:01
Crozin 1. Zacznijmy od tego, że filmy i aktorzy tworza re... 3.12.2013, 09:00:33
WebCM 1. Masz napisane wiele-do-jednego (n:1).
2. O wszy... 4.12.2013, 14:32:04
Crozin Miało być: [...] tworzą relację wiele-do-wielu, NI... 4.12.2013, 15:16:55
viking Ale w sumie masz to dokładnie opisane w dokumentac... 4.12.2013, 16:40:56
WebCM W Doctrine i ORM-ach w Javie klucze obce są mapowa... 5.12.2013, 01:52:49
WebCM Phalcon jest podatny na SQL Injection w ograniczon... 7.12.2013, 14:10:50 ![]() ![]() |
|
Aktualny czas: 25.12.2025 - 19:23 |