Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Symfony][SF2]Generowanie klasy entity
Szymciosek
post 30.09.2012, 14:58:48
Post #1





Grupa: Zarejestrowani
Postów: 1 168
Pomógł: 126
Dołączył: 5.02.2010
Skąd: Świdnica

Ostrzeżenie: (0%)
-----


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 ?
Go to the top of the page
+Quote Post
rzymek01
post 30.09.2012, 17:48:04
Post #2





Grupa: Zarejestrowani
Postów: 592
Pomógł: 62
Dołączył: 3.08.2006

Ostrzeżenie: (0%)
-----


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

Ten post edytował rzymek01 30.09.2012, 17:49:42


--------------------
:]
Go to the top of the page
+Quote Post
Szymciosek
post 30.09.2012, 18:36:45
Post #3





Grupa: Zarejestrowani
Postów: 1 168
Pomógł: 126
Dołączył: 5.02.2010
Skąd: Świdnica

Ostrzeżenie: (0%)
-----


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...
Go to the top of the page
+Quote Post
rzymek01
post 1.10.2012, 16:10:20
Post #4





Grupa: Zarejestrowani
Postów: 592
Pomógł: 62
Dołączył: 3.08.2006

Ostrzeżenie: (0%)
-----


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.


--------------------
:]
Go to the top of the page
+Quote Post
netrat
post 1.10.2012, 20:30:17
Post #5





Grupa: Zarejestrowani
Postów: 14
Pomógł: 2
Dołączył: 1.10.2012
Skąd: Łódź

Ostrzeżenie: (0%)
-----


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.

Ten post edytował netrat 1.10.2012, 20:30:45
Go to the top of the page
+Quote Post
Szymciosek
post 15.10.2012, 21:54:57
Post #6





Grupa: Zarejestrowani
Postów: 1 168
Pomógł: 126
Dołączył: 5.02.2010
Skąd: Świdnica

Ostrzeżenie: (0%)
-----


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 ?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.04.2024 - 04:08