W starszych wersjach Symfony można było budować nowe obiekty w obiekcie danych, rozszerzając klasę modelu na rozszerzoną podklasę.W jaki sposób rozszerzasz jednostkę w Symfony2, tak jak kiedyś w Symfony 1?
Na przykład miałem model ankiety, który miał tabelę wyników. Ta tabela wyników miała klasę modelu Result.php, która służyła do ustawiania i otrzymywania wyników za pomocą Doctrine. Następnie użyłem podklasy modelu ResultPeer.php, aby dodać nową funkcję do obiektu Result, który przyjął wynik i w zależności od ustalonego zestawu progów obliczył wynik i odpowiadający mu kolor.
W nowej wersji Symfony2 przy użyciu Doctrine2 staram się wypracować najlepszy sposób na zrobienie tego. Podczas tworzenia obiektu mogę jedynie znaleźć w dokumentacji możliwość dodawania obiektów w oparciu o relacje struktury danych.
Zajrzałem do repozytoriów encji, ale to nie wydaje się rozszerzać ani dodawać funkcjonalności do oryginalnego obiektu. Wydaje się, że przywraca obiekty danych na podstawie zapytań, które są bardziej złożone niż standardowe funkcje zapytań.
Przyjrzałem się również usługom, które mogę wykorzystać do zebrania obiektu, a następnie za pomocą obiektu utworzyć nową tablicę, która zawiera ten obiekt i nowo utworzone dane, ale to po prostu nie wydaje się właściwe lub postępuj zgodnie z filozofią Symfony chodzi o wszystko.
Czy ktoś wie, w jaki sposób funkcje można dodać do istniejącego obiektu danych. Zauważyłem, że jest to przydatne w starszej wersji Symfony, ale nie może znaleźć alternatywy w nowej wersji Symfony2.
To jest genialne. Wiedziałem, że to musiało być możliwe. Dzięki Matt. –
Załóżmy, że mam 'BaseAuditableEntity.php' ma kolumnę' lastName' z nullable = false, a następnie rozszerzenie klasy na 'User.php'. Muszę zmienić powyższe nazwisko w klastrze, zaakceptuj wartości null (nullable = true). Czy pomożesz mi, jak to zrobić? –
W swojej klasie "User.php', spróbuj zredefiniować właściwość' lastName' i powiązaną z nią adnotację.Może to zastąpi to, co zostało wcześniej ustawione w jednostce podstawowej. Jeśli to nie zadziała, obawiam się, że nie mogę pomóc dalej. Spróbuj zapytać na liście dyskusyjnej doctrine2. Jeśli znajdziesz rozwiązanie, nie wahaj się zgłosić go tutaj. – Matt