Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony][SF2]Generowanie klasy entity
Forum PHP.pl > Forum > PHP > Frameworki
Szymciosek
Witam,
jak wam pewnie wiadomo Symfony korzysta z entity (klasa dostępu), na jej podstawie jestem w stanie stworzyć tabelę w bazie i kolumny... Ale czy jestem w stanie zrobić to w drugą stronę, tzn jeśli mam gotową jakąś bazę już, to czy dam radę wygenerować na jej podstawie klasę entity ?
rzymek01
jasne,

najpierw musisz mieć poprawnie skonfigurowane połączenie z bazą danych (parameters.ini),
odpalasz konsolę, wchodzisz do katalogu projektu,
następnie generujesz metadane (np. w formacie yaml):
Kod
php app/console doctrine:mapping:convert yaml ./src/{Nazwa}/{Twoj_Bundle}/Resources/config/doctrine/metadata/orm --from-database --force


Z utworzonych metadanych generujesz klasy Entities (np. z wykorzystaniem annotation):
Kod
php app/console doctrine:mapping:import {Nazwa}{TwojBundle} annotation


Potem możesz wygenerować sobie gettery i settery:
Kod
php app/console doctrine:generate:entities {Nazwa}{TwojBundle}


po szczegóły odsyłam do dokumentacji: http://symfony.com/doc/2.0/cookbook/doctri...ngineering.html
Szymciosek
Czym tak właściwie jest u Ciebie {Nazwa} ?

..../src/{Nazwa}/{Twoj_Bundle}/...

No i czym jest Twoj_Bundle. Pytam, bo spieram się ze znajomym i już zgłupiałem...
Myślałem, że nazwa to będzie np Firma wykonująca zlecenia, a Twoj_Bundle, to może być np coś mniejszego jakiś FrontendBundle, który ma za zadanie pokazać nam to co mamy zobaczyć na stronie...
rzymek01
wpisujesz to co masz w swojej strukturze katalogów smile.gif

{Nazwa} to tzw. vendor, załózmy, że tworzysz jakiś silnik do rysowania wykresów, to przykładowo jako vendor wpiszesz Graphs, a jako Bundle CoreBundle.

Ze standardowych przykładów:
Acme to {Nazwa}
DemoBundle to {TwojBundle}

Taki jest standard umieszczania swoich plików źródłowych w Symfony2.
netrat
Jeżeli zaczynasz swoją przygodę z Symfony2 to jeśli nie wiesz co tam wpisać to wpierw stwórz sobie jakiegoś bundla ( http://symfony.com/doc/2.0/bundles/SensioG...ate_bundle.html ) i zobacz jakie są nazwy na co i jaka jest struktura katalogów.
Szymciosek
Więc dopiero dzisiaj podchodzę do tematu tworzenia entity z istniejącej bazy.

Mam bazę, a w niej tabele:
- events_logger
- ftp_accounts
- users
- user_roles
- user_settings

Po wpisaniu w CMD tego:

Kod
php app/console doctrine:mapping:convert yaml ./src/ApiRest/ServiceBundle/Resources/config/doctrine/metadata/orm --from-database --force


otrzymuję komunikat...
Kod
  [Doctrine\ORM\Mapping\MappingException]
  Table user_settings has no primary key. Doctrine does not support reverse engineering from tables that don't have a primary key.


I teraz po pierwsze nie chodzi mi o wygenerowanie Entity obsługującej user_settings, a ma to być do events_logger.

Chyba, że to działa do wygenerowania całej bazy do kilku klas Entity, a nie jest to jakoś pokazane w przykładach http://symfony.com/doc/2.0/cookbook/doctri...ngineering.html że generuje kilka Entity ?


Dobra, udało się wink.gif

Jedynie jaki problem zauważyłem, to nie ściąga mi dokładnie nazw kolumn podczas tworzenia entity na podstawie istniejącej bazy. Np. mam kolumnę first_name, a po wygenerowaniu mam w entity firstName, co nie jest mi na rękę... da się to jakoś zostawić DOKŁADNIE tak jak jest w bazie ?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.