W codziennej pracy używamy wielu narzędzi wspomagających naszą pracę przy tworzeniu stron internetowych i wykonywaniu innych usług z tym związanych. Poczynając od IDE, poprzez różnego rodzaju narzędzia konsolowe, aż po wtyczki w przeglądarkach internetowych jesteśmy zależni od wielu tysięcy linii kodu, dzięki którym nasze życie jest o wiele łatwiejsze, niż w przypadku, kiedy musielibyśmy wykonać tą pracę sami. W dzisiejszym wpisie chciałbym pokazać jeden z niedawno poznanych sposobów na ułatwienie sobie życia podczas pracy z biblioteką Doctrine i frameworkiem symfony.
Fotografia: jimw, CC-BY.
MySQL Workbench: Generowanie plików YAML dla Doctrine i symfony.
Aby móc wykorzystać opisywaną dzisiaj funkcjonalność, musimy zaopatrzyć się w dwie rzeczy:
- program MySQL Workbench, aktualnie w wersji 5.2.33, sam korzystam z 5.2.31,
- nierozwijana już, ale działająca bez problemów wtyczka mysql-workbench-doctrine-plugin.
Instalujemy Workbencha [jeśli go oczywiście jeszcze nie mamy ;]], rozpakowujemy archiwum wtyczki i możemy przejść do zabawy. Najpierw uruchamiamy program, a kiedy już załaduje wszystkie swoje funkcjonalności wybieramy z menu górnego pozycje: „Scripting > Install Plugin / Module…”. W oknie, które się pojawi lokalizujemy katalog, w którym rozpakowaliśmy ściągnięte archiwum wtyczki. Plik nie będzie widoczny, ponieważ domyślnym filtrem wyświetlania są skrypty Pythona [.py], dlatego w rogu okna zmieniamy filtr na pliki skryptów Lua [.lua]. Wskazujemy plik „DoctrineExport.grt.lua” i klikamy przycisk „Otwórz”. Gratulacje, wtyczka została zainstalowana!
Teraz czas na wykorzystanie wtyczki do pracy. Otwieramy wybrany diagram, w moim przypadku jest to:
Wybieramy z menu pozycje: „Plugins > Catalog > Doctrine Export 0.4.1: Copy Generated Doctrine Schema To Clipboard”. I… już!
Wynikowy plik YAML prezentuje się następująco:
---
detect_relations: true
options:
collate: latin1_swedish_ci
charset: latin1
type: InnoDB
post:
tableName: posts
columns:
id:
type: integer(4)
primary: true
notnull: true
name:
type: string(255)
content:
type: clob(65535)
category:
type: integer(4)
relations:
category:
class: category
local: category
foreign: id
foreignAlias: posts
indexes:
FK_Post_Category:
fields: [category]
category:
tableName: categories
columns:
id:
type: integer(4)
primary: true
notnull: true
name:
type: string(255)
postTag:
tableName: post_tags
columns:
post:
type: integer(4)
primary: true
notnull: true
tag:
type: integer(4)
primary: true
notnull: true
relations:
tag:
class: tag
local: tag
foreign: id
foreignAlias: post_tags
post:
class: post
local: post
foreign: id
foreignAlias: post_tags
indexes:
FK_Post_Tag:
fields: [tag]
FK_Tag_Post:
fields: [post]
tag:
tableName: tags
columns:
id:
type: integer(4)
primary: true
notnull: true
name:
type: string(255)
Jak widać, zostały uwzględnione zarówno dane poszczególnych tabel, jak i relacje pomiędzy nimi. Oczywiście symfony obsługuje w swoim narzędziu konsolowym generowanie plików YAML bezpośrednio ze schematu bazy danych [symfony doctrine-build-schema], aczkolwiek pokazany dzisiaj przeze mnie materiał może służyć jako „inna droga” do osiągnięcia tego samego efektu.
Być może znacie inne wygodne i wydajne sposoby na poprawę pracy z podobnymi narzędziami / bibliotekami / frameworkami – jeśli tak, czekam na Wasze komentarze. Tymczasem życzę wszystkiego dobrego i do zobaczenia w kolejnym wpisie!
Warto przeczytać.
Trwa ładowanie…

5.2.33 u mnie nie działa!?!?!. Plugin się zainstalował, ale go nie ma!
Dobrze wiedzieć, że istnieje coś takiego – dzięki za krótki, informacyjny i konkretny wpis ;)
Płyta miesiąca – kwiecień 2011- Alter Bridge – Blackbird
Tak jak napisałem, sam korzystam z 5.2.31, ale nie sądzę że w ciągu dwóch „numerków” by się to aż tak zmieniło. Nie wiem, czy nie będzie też potrzebny restart po zainstalowaniu wtyczki. Na pewno wybrałeś dobre pozycje z menu? Przeszukaj wszystkie pozycje pod „Plugins” – powinno być. Jeśli nie będzie, to napisz – sam sprawdzę na najnowszej wersji. ;]
Linkdump 38- A niech Cię font!
Zgadzam się, to naprawdę ułatwia życie.
Co do samego wpisu – jak widzisz wziąłem sobie do serca kilka uwag, jakie mi przekazałeś podczas rozmowy na 4Developers. ;]
Linkdump 38- A niech Cię font!
Jeśli ktoś używa to również jest wtyczna do Propela.
O ile ktoś faktycznie używa:)
Ja wolę Doctrine, ludzie, których znam i korzystają z ORMów w PHP też wolą Doctrine, dlatego wpis jest o Doctrine. Może „ktoś” faktycznie używa. ;]
Linkdump 38- A niech Cię font!
Na stronie projektu jest też wersja php’owa tego pluginu ze znacznie większym spektrum mozliwości (importuje plik mwb workbencha). Autor dał możliwość exportu zarówno do wersji kompatybilnych z Doctrine 1.2 jak i 2.0. Z całą pewnością warto korzystać, oczywiście wygenerowany schemat wymaga pewnych korekt ale pomaga na pewno.
Oczywiście, aczkolwiek ja korzystam z pluginu do Workbencha, bo tak jest mi wygodniej. Może kiedyś spróbuję i z nowszą wersją.
Linkdump 38- A niech Cię font!
Bardzo spoko wpis, ułatwiłeś mi życie:-)
Klepanie ymli na kilkaset linii powoli zaczynało mi się nudzić:)
Pozdrawiam
Takie było założenie. ;] Zapraszam do lektury innych wpisów – być może oszczędzą Ci jeszcze więcej czasu.
Potyczki Algorytmiczne 2011- Zadanie „Wieże”