![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 247 Pomógł: 9 Dołączył: 20.09.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Witam,
mam taką strukturę tabel: ![]() Teraz moje pytanie, czy w jakiś sposób Doctrine 2 pozwala na takie dziedziczenie ale bez podawania discriminator column ? Aby mieć taki kod:
Z góry dzięki i pozdrawiam ![]() |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
1. Kolumna pozwalająca na rozróżnienie typu musi się pojawić. Co najwyżej można pominąć zdefiniowanie jej możliwych wartości, wtedy zostanie użyta nazwa klasy danego obiektu, ale to bardzo złe rozwiązanie w większości wypadków.
2. Tutaj nie powinieneś w ogóle korzystać z dziedziczenia. Ani profesor, ani student nie jest wyspecjalizowaną formą osoby. Oba te obiekty powinny mieć co najwyżej relację jeden-do-jednego z obiektem PersonalInformation zawierającym imię, nazwisko i resztę danych. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 247 Pomógł: 9 Dołączył: 20.09.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Tutaj dałem taki szybki przykład. Chciałem zrobić na takiej zasadzie, że pobieramy konkretny obiekt i za pomocą INNER JOIN pobieramy resztę danych, które dziedziczymy. I tutaj nie chciałem, robić discriminator kolumn, tylko po dziedziczeniu wiemy, z jakiej kolumny jeszcze musimy pobrać dodatkowe dane
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Ale skąd niby Doctrine miałby wiedzieć jakiej klasy jest dany rekord pobierany z bazy?
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 247 Pomógł: 9 Dołączył: 20.09.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
I teraz w klasie Student dodać odpowiednią adnotację. Tylko, że nie wiem czy takie coś istnieje w doctrine. Ale uważam, że jest to sensowne. |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Dokumentacja jest całkiem przyzwoita - http://docs.doctrine-project.org/en/latest...ce-mapping.html - i jasno stwierdza, że jeżeli chcesz otrzymać dziedziczenie encji (zarządzanej przez Doctrine) musisz zdefiniować owe dziedziczenie.
Ponawiam pytanie: co chcesz dokładnie osiągnąć i dlaczego nie chcesz skorzystać po prostu z @DiscriminatorMap? |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 23:32 |