W Magento jest to rozwiązane bardzo fajnie:
// pobieram instancję modelu customer $customer = Mage::getModel('customer/customer'); // ładuje użytkownika o ID 1 $customer->load(1); // w tym momencie wysyłany jest email do użytkownika $customer->sendNewAccountEmail('registered'); // w tym momencie zmieniam imie uzytkownika (bez zapisu do bazy) $customer->setFirstame('Jan'); // w tym momencie zapisuje dane do bazy $customer->save();
Mam poprostu instancje customer która ma wszystkie settery, gettery związane z bazą danych oraz metody pomocnicze które mogą korzystać z tych danych.
Jak to rozwiązać w symfony aby było prawidłowo i przyjemnie? Chodzi też o elastyczność. Rozwiązanie powinno też pozwalać na to aby dodanie nowej kolumny wiązało się ze stworzeniem kolumny w bazie danych, dodanie settera oraz gettera do entity i w zasadzie to wszystko. Poprostu teraz znalazłem jedyne rozwiązanie w którym tworze model, wstrzykuje entity i wtedy mogę kombinować ale niestety dodanie w przyszłości nowych kolumn będzie wiązało się z dodawaniem już setterów,getterów zarówno w modelu oraz entity. Czy to prawidłowa droga? Wydaje mi się że to mało wygodne. Idealnym miejscem na to wszystko jest bezpośrednio Doctrine ENTITY ale wg. konwencji to tylko zbiór setterów i getterów a na dodatek bez dostępu do usług.