2011-07-28 10 views
9

Mam złożony projekt bazy danych z widokami, relacjami itp. Postanowiliśmy przejść na ORM ze standardowego Zend_db. Z powodzeniem zintegrowałem zend 1.11 i doktrynę 2.1. Wszystkie tutoriale wyjaśniają tworzenie całej bazy danych za pomocą ręcznie pisanych klas. Ale co z istniejącą bazą danych zawierającą dane? I znowu szukał i okazało się, że mam użyć poniższej komendyBłąd Doctrine 2 i Zend 1.11 convert-mapowanie ..

php orm:convert-mapping --from-database php path/where/you/want/to/store/mapping/classes 

Kiedy zrobić to za pomocą prostego bazy danych z zaledwie 3 tabel i bez związku, powyższa komenda działa pięknie.

Ale kiedy próbował użyć tego samego polecenia na mojej bazy danych zgłasza wyjątek mówiący

[Doctrine\ORM\Mapping\MappingException] 

Property "employeeid" in "Organization_has_employees" was already declared, but it must be 
declared only once 

zmieniłem całą moją nazwę pola tak, że nie ma powtarzające się nazwiska w którymś z tabeli, ale nadal nie ma szczęścia .

Proszę, pomóżcie mi z tym. Łamie mi głowę na więcej niż 3 dni.

Karthik

Odpowiedz

12

Po godzinach eksperymentu okazało się problem. Oczywiście nie jest to w Doctrine, że jest to baza danych, którą zaprojektowałem. Kiedy robisz wiele do wielu tabel w MySQL Workbenck, jesteś zmuszony zrobić Zidentyfikowanie Powiązania, które tworzy kolejną tabelę i tworzy klucze złożone z tabel nadrzędnych. Upewnij się, że nazwasz te klucze główne inaczej lub, jeśli to możliwe, usuń klucze composit i ustaw je jako relacje nieidentyfikujące. Dodaj kolejną kolumnę o nazwie id i pole to jest kluczem podstawowym, a numerowanie automatyczne

Narzędzie Doctrine również ma problem z buforowaniem, więc upewnij się, że zmieniasz nazwę bazy danych za każdym razem, gdy wprowadzasz zmianę i zmieniasz ją w konfiguracji Zend .

Mam nadzieję, że to komuś pomaga. Jeśli nadal masz problemy, proszę zamieścić tutaj swoje pytania, będę mógł na nie odpowiedzieć.

+1

Mam ten sam problem (błąd), z doktryną: schema: create. Baza danych jest pusta. Doctrine rzuca: Właściwość "organizacja" w "myApp \ PersonBundle \ Entity \ Contact" została już zadeklarowana, ale musi być zadeklarowana tylko raz. – FMaz008

+0

@ FMaz008 Ya to trochę cierpienia ... Czy próbowałeś zmienić nazwy pól na coś unikatowego ? – Karthik

+0

Witam @Karthik. Mam ten sam problem. Nie wiem dokładnie, co muszę usunąć lub edytować. Czy mogę dać ci moje *. Plik MWB? Z góry dzięki. – Puzo

Powiązane problemy