2011-07-26 9 views
5

Jestem nowy w ORM i bardzo chciałbym się go nauczyć. Udało mi się zainstalować wszystkie klasy i konfiguracje dla Doctrine 2.1 z Zend 1.11.x, wykonując ten samouczek.Zend 1.11 i Doctrine 2 Automatycznie generuj wszystko, co potrzebne z już istniejącej bazy danych

http://www.zendcasts.com/unit-testing-doctrine-2-entities/2011/02/ Który używa wtyczek Bisna i skryptów doktryny.

Teraz mój problem polega na tym, że wyraźnie wyjaśnia, w jaki sposób tworzyć encje i tabele poprzez klasy doktryn, ale nie wyjaśnia, w jaki sposób automatycznie generować proxy i klasy repo z już istniejącej bazy danych, co pomaga mi wybrać, wstawić i zaktualizować. Zawsze tworzę swoje bazy danych za pomocą MySQL Workbench.

ja też następuje poniższy poradnik jak dobrze

http://www.zend.com/en/webinar/Framework/70170000000bSrG-webinar-zf-v-1-doctrine-v-2-20101214.flv

Moja baza danych jest tak skomplikowane, ze związek płynącego przez każdy możliwy sposób. Jeśli wykonam kroki opisane w tych samouczkach, nigdy nie ukończę mojego projektu. Czy ktoś może wyjaśnić, jak zacząć używać Doctrine po konfiguracji. Biorąc pod uwagę, że mam już bazę danych i moje foldery Modelu są puste. Mam strukturę folderów, jak poniżej.

C:/zf/library/Doctrine 
    C:/zf/library/Symfony 
    C:/zf/library/ZC -- (my model which should contain the proxies and repo of Doctrine. At the moment it contains nothing.) 
    C:/zf/library/Zend 
C:/zf/scripts/doctrine.php 

Proszę, pomóżcie mi!

Wysłałem tego samego postu wczoraj i nikt nie odpowiedział na mój post. Daj mi znać, jeśli potrzebujesz więcej informacji ode mnie.

Dziękuję

Karthik

Odpowiedz

4

Według Nauki należy tworzyć podmioty najpierw siebie, a następnie utworzyć schematu bazy danych z tych podmiotów.

Ale ponieważ masz już bazę danych, prawdopodobnie tego nie chcesz. Możliwe jest przekształcenie bazy danych w podmioty Doctrine2 w PHP, XML lub Yaml.

Powinieneś przyjrzeć się bliżej narzędziom linii poleceń, które Doctrine oferuje za pomocą kleju Bisna, ponieważ możesz wygenerować wiele rzeczy.

wygenerować podmioty z bazy danych należy rozważyć następujące polecenie:

php doctrine.php orm:convert-mapping --from-database php ../library/Application/Entity 

Można również zdefiniować przestrzeń nazw i klasę bazową, która swoimi podmioty muszą rozciąga się z: --namespace = nazw i --extends = klasa.

Doctrine2 ostrzega, aby przekonwertować bazę danych na encje, ponieważ nie wszystko może być automatycznie wykryte lub obsługiwane. Na przykład typy danych ENUM nie są domyślnie obsługiwane w Doctrine2, więc konwersja bazy danych spowoduje błąd.

Warto sprawdzić wszystkie swoje jednostki, zwłaszcza skojarzenia, zanim ich użyjesz. Mam nadzieję, że ci to pomoże.

2

Jeśli dobrze rozumiem pytanie, trzeba się swoimi podmioty już skonfigurowany i potrzebować do automatycznego generowania serwera proxy i klas repozytorium.

Oba mogą być tworzone za pomocą poleceń CLI z następujących Doktryna katalogu danej aplikacji:

php scripts/doctrine.php orm:generate-proxies 

php scripts/doctrine.php orm:generate-repositories library/ 

Jeśli szukasz sposobu, aby automatycznie wygenerować klas encji, niestety nie sądzę, rozwiązanie jest jeszcze dostępne.

Przedstawiciel ds. Wsparcia pod numerem ORM Designer powiedział, że "pracuje nad" tą funkcją i że jest "bardzo wymagający". Mamy nadzieję, że zostanie on uwzględniony w ORM Designer 2.0, ponieważ zazwyczaj istnieje wiele powtarzających się czynności związanych z klasami kodowania/mapowania jednostek, które mogą być zautomatyzowane.

1

Możesz użyć polecenia orm:generate-entities, jeśli podasz informacje o odwzorowaniu w formacie XML lub YAML.

Zobacz http://www.doctrine-project.org/docs/orm/2.1/en/reference/tools.html#entity-generation

na rozwój, zestaw generacji proxy być automatyczny w konfiguracji, w przeciwnym razie, należy użyć komendy orm:generate-proxies.

O ile nie trzeba dostosowywać repozytoriów, generyczne tworzone są w menedżerze encji na żądanie. Aby określić niestandardowe repozytoria, po prostu użyj atrybutu odwzorowania encji repository-class.

Zobacz http://www.doctrine-project.org/docs/orm/2.1/en/reference/xml-mapping.html#defining-an-entity na przykład