• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Symfony - Jak wygenerować "entity" z istniejcej bazy danych z >>Relacjami<< ?

VPS Starter Arubacloud
+1 głos
430 wizyt
pytanie zadane 23 września 2016 w PHP przez wanderer Gaduła (3,710 p.)
zamknięte 26 września 2016 przez HaKIM
Jak wygenerować pliczek Entity w Symfony z istniejącej już bazy danych z relacjami?

*bd jest dość rozbudowana
komentarz zamknięcia: Problem rozwiązany.

1 odpowiedź

+1 głos
odpowiedź 23 września 2016 przez efiku Szeryf (75,160 p.)
wybrane 26 września 2016 przez HaKIM
 
Najlepsza

http://symfony.com/doc/current/doctrine/reverse_engineering.html - Wszystko opisane w dokumentacji. Jak nie zaskoczy to albo baza źle zaprojektowana, albo doctrine nie daje rady i trzeba będzie ręcznie budować encje.

Reverse Engineering is not always working perfectly depending on special cases. It will only detect Many-To-One relations (even if they are One-To-One) and will try to create entities from Many-To-Many tables. It also has problems with naming of foreign keys that have multiple column names. Any Reverse Engineered Database-Schema needs considerable manual work to become a useful domain model.

komentarz 23 września 2016 przez wanderer Gaduła (3,710 p.)

no to był 1 link na który wszedłem jak szukałem o tym info, baza jest dobra ale bardzo rozbudowana, w java EE był banalny sposób na wygenerowanie encji z rozbudowanej bazy, a w linku jest przyklad prostej bazy , zbyt prostej :


"If you want to have a one-to-many relationship, you will need to add it manually into the entity or to the generated XML or YAML files. Add a section on the specific entities for one-to-many defining the inversedBy and the mappedBy pieces." 

ten wpis wiele wyjasnia w takim razie, trzeba pisać ręcznie jesli ma się zaprojektowana baze ? gdzie tu sens? stad pytam czy jest jakis ludzki sposob 

komentarz 23 września 2016 przez efiku Szeryf (75,160 p.)
A no taki sens, że reverse engineering to nie takie hop siup. Doctrine średnio sobie radzi. Zawsze trzeba coś manualnie zrobić. Teoretycznie on powinien Ci wygenerować encje ale nie podpinać relacji więc trzeba będzie gdzie to możliwe je zrobić. Cóż to nie java, ale i tak niedawno takich narzędzi jak doctrine w php nie było to i tak juz coś jest.
komentarz 24 września 2016 przez wanderer Gaduła (3,710 p.)
ok rozumiem, teraz przynajmniej wiem jak podejść do tematu
czyli najlepiej wygenerować same tabelki i potem dorobić relacje,

a tak z ciekawości bo jeszcze się z tym nie spotkałem, manualne dopisywanie relacji to będzie realizowane w wygenerowanym "entity" a nie w cmd - czy się myle?
komentarz 24 września 2016 przez efiku Szeryf (75,160 p.)
Raczej manualnie. W cmd po prostu robisz sobie encje i tyle, relacje trzeba manualnie zrobić. Z mojej strony to odradzam w XML całe mapowanie trzymać. Chyba że lubisz się bawić :D hmm a czy ten generator encji w javie da rade wygenerować to tak abys mial mniej więcej osobno mapowanie np w plikach yml ? :) wtedy chyba manualne nanoszenie relacji powinno być dużo szybsze. Niestety z tego co widzę to ten tool doctrina jest rozwijany. Niby na stacku są jakieś inne ale ... oststni uptade w jednym jest z 12. Próbuj. Ja kiedys robiłem coś takiego to pamiętam że relacje musialem ręcznie napować, nie bylo to szczególnie trudne ale czasochłonne.
komentarz 24 września 2016 przez wanderer Gaduła (3,710 p.)
Nie mam już tego z javy, trochę czasu minęło od kiedy to robiłem.
W takim razie będę musiał próbować, raczej zacznę od czegoś na prawdę prostego. Prawda, to może nie być trudne tylko czasochłonne; dlatego przydałby się jakiś przykład, wzór.
komentarz 24 września 2016 przez efiku Szeryf (75,160 p.)
Przecwicz przykład na dokumentacji. Później i tak trafisz na dokumentacje symfony (sekcja doctrine) rodzaje mapowania i jak je zastosować w encji. Generalnie na lewym monitorze projekt na prawym dokumentacja. . Daj znać czy wygenerował encje bez relacji na tej bazie czy ich nie wygenerował wcale. Jak wygeneruje same tabelki to juz pol roboty.
1
komentarz 24 września 2016 przez wanderer Gaduła (3,710 p.)
przyznaję ze Twoje wpisy pomogły ten dość ogólnie opisany problem  rozbić na kilka mniejszych i rozjaśnić drogę działania co ma sens :D
komentarz 26 września 2016 przez efiku Szeryf (75,160 p.)
Ciesze się, że mogłem choć trochę pomóc.
komentarz 26 września 2016 przez efiku Szeryf (75,160 p.)

Hej zdaje się, że jest jeszcze cień szansy. 

Zakładając, że masz cały model bazy jako *.mwb to to może pomóc:

https://github.com/mysql-workbench-schema-exporter/mysql-workbench-schema-exporter#using-composer

później (ja tak robię):

vendor/bin/mysql-workbench-schema-export --zip mojabaza.mwb

 

Drobna uwaga, z tego co ja miałem, niektóre pola omijał i nie dawał unique. :)

Wybieram opcje 1 (adnotacje)

otrzymuję pliczek z zipem.

Spróbuj, może pomoże :D

Mój composer.json:

{
	"name" : "efiku/exporter",
	"type" : "project",
	"require" : {
		"php" : ">=5.4.0",
		"doctrine/inflector" : "^1.0.0",
		"mysql-workbench-schema-exporter/mysql-workbench-schema-exporter": "^3.0",
		"mysql-workbench-schema-exporter/doctrine2-exporter" : "^3.0"
	},
	"bin" : [
		"bin/mysql-workbench-schema-export",
		"bin/update-sql-reserved-words"
	]
}

 

Podobne pytania

0 głosów
0 odpowiedzi 67 wizyt
pytanie zadane 13 października 2016 w SQL, bazy danych przez pajos96 Obywatel (1,350 p.)
0 głosów
2 odpowiedzi 5,442 wizyt
0 głosów
1 odpowiedź 3,514 wizyt

92,454 zapytań

141,263 odpowiedzi

319,099 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...