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: 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!