Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony 2][Doctrine] Problem z mapowaniem tabel
Forum PHP.pl > Forum > PHP > Frameworki
Michal_Sz
Witam,

Chciałbym zmapować tabelę z bazy mssql, niestety podczas takiej próby pojawia się błąd:


Table xxx has no primary key. Doctrine does not support reverse engineering from tables that don't have a primary key.

Oczywiście tabela xxx jest inną tabelą niż ta którą chcę zmapować.
Czy może mi ktoś podpowiedzieć jak mogę rozwiązać taką sytuację?
Tabela xxx jest nie do ruszenia, ponieważ wykorzystywana jest gdzie indziej
ohm
Jak mapujesz? Wrzuć co wykonujesz.
Michal_Sz
Zaczynam od tego:
console doctrine:mapping:convert yml ./src/My/MyBundle/Resources/config/doctrine/metadata/orm --from-database --force --em=moja_baza --filter=nazwa_tabeli

Już tutaj pojawia się błąd. To samo dzieje się przy console doctrine:mapping:import
ikssde
W czym problem? Doctrine po prostu nie umożliwia wykonania takiej operacji na tabeli która nie ma klucza głównego. Dodaj ten klucz na kopii tabeli albo mapuj ręcznie.
Michal_Sz
Ok, ale dlaczego podczas mapowania tabeli_1 błąd ma związek z inną tabelą tej bazy?
com
Rozumiem, że angielskiego można nie znać ale jaki problem to przetłumaczyć, te komunikaty są napisany dla ludzi wystarczy to przeczytać i masz odpowiedź smile.gif jak nie znasz podstaw relacyjnych baz danych to nie ma co iść dalej, najpierw trzeba się wtedy z nimi zapoznać smile.gif
Michal_Sz
Rozumiem co mówi komunikat, czy chodzi o to, że tabela którą chcę zmapować jest powiązana z tabelą której dotyczy błąd?
com
http://www.wikiwand.com/pl/Klucz_g%C5%82%C3%B3wny Tak chodzi o zachowanie relacji, bo operujesz na bazie relacyjnej a nie nosql smile.gif
Michal_Sz
No właśnie tak przypuszczałem, ale tabela którą chciałbym zmapować nie jest powiązana z żadną inną.
Co w tym wypadku mi pozostaje? Ręczne stworzenie Entity?
com
Klucz główny do tabeli dodałeś już?
Michal_Sz
NIe, ponieważ tak jak wspominałem wcześniej nie mogę nic zmieniać w tej tabeli dlatego szukam rozwiązanie na zmapowanie tabeli która oczywiście ma klucz główny.
ikssde
Wygląda na to, że pomimo użycia parametru filter analizowana jest cała baza danych, natomiast wspomniany filtr ogranicza jedynie to co generator wypluwa.

Zrób sobie kopię tej bazy danych, dodaj klucz główny albo skasuj tabelę, która powoduje problem i wtedy zrób mapowanie. Głównym celem Doctrine jest co innego niż mapowanie obiektów na podstawie bazy danych więc nie ma się co spodziewać rewelacji w tej kwestii.
Michal_Sz
Chyba rzeczywiście nie pozostaje mi nic innego jak stworzenie bazy z kopią interesującej mnie tabeli, zmapowanie tabeli i korzystanie z niej na oryginalnej bazie.
Bo rozumiem, że takie rozwiązanie nie będzie generować problemów ?
com
No ale ustawienie klucza nie wygeneruje Ci problemów, chyba ze chodzi o to że nie masz gdzie go postawić, ale to wtedy baza jest źle zbudowana smile.gif
Michal_Sz
niestety nie wiem czy udałoby się coś zmienić w bazie pod kątem kluczy, ponieważ z bazy korzystają inne programy, ja jedynie potrzebuje skorzystać z kilku tabel.
Dlatego najlepszym rozwiązaniem będzie stworzenie kopii bazy, ale tylko z tymi kilkoma tabeli i zmapowanie ich, a potem korzystanie na orginalnej bazie, chyba że się mylę?
ikssde
Tak będzie najlepiej. Nic nie stoi na przeszkodzie żebyś tak zrobił.
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.