Cześć,
obecnie piszę w Symfony(3.3) (+ Doctrine2). Czy możliwe jest aby mapować rekordy z jednej tabeli do wielu typów dziedziczących po jednej, nieabstrakcyjnej klasie?
Owa sytuacja wynika z tego, że wszystkie typy rzeczywiście mają wspólną klasę rodzica, z której repozytorium muszę korzystać. Rozwiązań jest kilka.
- @MappedSuperclass - problem polega na tym, że klasa bazowa nie jest queryable.
- Zawarcie w tej jednej tabeli enuma, do jakiego typu mam castowawać. W tym przypadku wali się SOLID, bo na niższym poziomie dziedziczenia zawieram informacje o wyższym poziomie.
- Podział na wiele tabel, w głównej zawarcie tylko pól z klasy bazowej. Resztę uzyskać relacją 1:1 do innych tabel reprezentujących inne klasy.
- A może jedno wspólne repozytorium?
Po co takie rozwiązania. Otóż chcę po stronie aplikacji wymusić na bazie danych polimorfizm. Wynika to z tego, żepwystąpienia encji z głównej tabeli chcę na niższym poziomie traktować jednakowo. Na wyższym poziomie chcę zamykać logikę biznesową do modeli. Dla każdej klasy inna logika.