![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 247 Pomógł: 9 Dołączył: 20.09.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Ostatnio napotkałem się na mały problem odnośnie dziedziczenia w Doctrine 2(SINGLE_TABLE). Mam tabelę `product` a w niej typ produktu `sell`, 'buy', 'sell-buy'. Chciałem sobie zrobić dziedziczenie na podstawie tych typów. Wszystko śmiga. Problem pojawia się w tedy gdy edytuję np Product\Sell i chciałbym go zmienić na Product\Buy, a disciminator column nie może się pojawić w klasie Product, chyba sam doctrine zmienia to pole na podstawie nazwy klasy. Kombinowałem na taki sposób, że kopiowałem dane z obiektu Sell do obiektu Buy(wraz z id) ale doctrine tworzy mi nowy rekord. Zastanawia mnie jak to dziedziczenie ma się do modyfikacji danych. Pozdrawiam (IMG:style_emoticons/default/smile.gif) Ten post edytował Fluke 3.09.2013, 20:10:55 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
1. Takie coś, to miejsce na użycie typów generycznych - niestety PHP ich nie wspiera.
2. Dlaczego w ogóle chcesz nagle zmieniać w swojej aplikacji typ obiektu (pomijając już w ogóle Doctrine i bazy danych) - jak już pisałem nie jest to normalna operacja z punktu widzenia OOP. Właściwie jedyne rozwiązanie jakie przychodzi mi do głowy to ręczne wykonanie zapytania zmieniającego wartość kolumny disciminator oraz ręczne zajęcie się wszelkim możliwymi konsekwencjami tego (usunięcie/zmodyfikowanie obiektów z relacji). |
|
|
![]() ![]() |
![]() |
Aktualny czas: 11.10.2025 - 09:43 |