Tomasz
Ducin
System Designer &
Architect, Trainer
Temat: dziedziczenie propel/symfony
czy któryś z szanownych kolegów wie jak można zaprojektować strukturę bazy danych w taki sposób, żeby uwzględnić w nim dziedziczenie? Owszem, wiem że można sobie po prostu dziedziczyć klasy, ale mi chodzi o to, żeby było to na poziomie struktury w schema.yml, na przykład:klasa human: kilka jakichś oczywistych danych, tworzą się klasy:
Human: BaseHuman
HumanPeer: BaseHumanPeer.
klasa pracownik biurowy: dodatkowy duży zestaw danych, schemat dziedziczenia:
BaseOfficeWorker: Human
BaseOfficeWorkerPeer: HumanPeer
OfficeWorker: BaseOfficeWorker
OfficeWorkerPeer:: BaseOfficeWorkerPeer
i np klasa menadżer:
BaseManager: Human
================
no i HUMAN samo w sobie (tabela) w bazie istnieć nie musi.
================
byłoby to przydatne gdyby np. tworzyć jakieś skomplikowane metody, które byłyby wykorzystywane przez wszystkie klasy dziedziczące, takie typowe zastosowanie podejścia obiektowego.
Znalazłem takie oto rozwiązanie, jest ono jednak dalekie od idealnego (lub przynajmniej "dalekie od dobrego")
http://www.symfony-project.org/snippets/snippet/218
Jeśli np mieć dużo atrybutów (klasy dziedziczącej) to trzeba się mnóstwo opisać...
Zastanawia mnie czy nie dałoby się w schema.yml dodać np takiego czegoś:
propel:
human:
_attributes: { phpName: Human }
id:
...
manager:
_attributes: { phpName: Manager, inherit: Human }
id:
...
Nie zagłębiałem się jakoś szczególnie głęboko w Propela (kod symfony póki co jest sam w sobie dość zawiły).
Może wywiąże się z tego jakaś ciekawa dyskusja :)