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: 375 Pomógł: 20 Dołączył: 28.07.2006 Ostrzeżenie: (0%)
|
W Doctrine i ORM-ach w Javie klucze obce są mapowane na obiekty:
Prawda, że proste? Twórcy Phalcona obrali inną ścieżkę. Czy właściwą? Pole film otrzyma ID powiązanego rekordu zamiast obiektu klasy Film. W przykładach nazwy tabel i klas są w liczbie mnogiej. Najlepiej pokażę do na przykładach: Nie trzeba żadnych adnotacji i plików konfiguracyjnych. Wystarczy tylko ustawić wirtualne klucze obce, bo tego Phalcon sam nie odczyta z bazy. Oczywiście wszystko możemy zmienić po swojemu, a nawet dodać aliasy dla nazw pól i relacji. Tu powstają pytania: 1. Czy w porządnym ORM potrzebujemy pól z ID powiązanych rekordów? 2. Czy z tego powodu zmieniać nazwy kolumn z "film" na "filmId" lub "film_id"? |
|
|
|
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
Crozin Nie, nie potrzebujemy. Wręcz nie powinniśmy się za... 5.12.2013, 08:10:50
WebCM Phalcon jest podatny na SQL Injection w ograniczon... 7.12.2013, 14:10:50 ![]() ![]() |
|
Aktualny czas: 24.12.2025 - 20:34 |