• 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<< ?

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
+1 głos
572 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 79 wizyt
pytanie zadane 13 października 2016 w SQL, bazy danych przez pajos96 Obywatel (1,350 p.)
0 głosów
2 odpowiedzi 6,162 wizyt
0 głosów
1 odpowiedź 3,728 wizyt

93,103 zapytań

142,077 odpowiedzi

321,571 komentarzy

62,445 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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...