(Aktualizacja) Ruckusing Migrations część 2 – praktyka – podstawy

Zgodnie z obietnicą przedstawiam kolejną część postu poświęconego frameworkowi Ruckusing Migrations. W tym tekście przedstawię podstawowe możliwości biblioteki na praktycznym przykładzie. Zakładam, że posiadasz teoretyczną wiedzę na temat sposobu działania tej biblioteki a także potrafisz ją prawidłowo skonfigurować.

Jeśli nie posiadasz tej wiedzy zapraszam w do zapoznania się z postem poświęconym tym zagadnieniom.

A więc chcesz dodać nową tabelę do bazy danych?

Aby tego dokonać w pierwszej kolejności należy w CLI przenieść się do głównego katalogu biblioteki i tam wykonać polecenie:

Ostatni parametr możemy podać w formacie camelCase lub poszczególne słowa mogą być oddzielone podkreśleniami. Po naciśnięciu entera nazwa pliku i tak zostanie skonwertowana do UpperCamelCase. Przykładowo jeśli wykonam następujące poniższe polecenie:

to w konsoli pojawi się informacja o tym, że utworzony został plik o nazwie 20160109113352_AddingANewTable.php. Teraz należy przejść do katalogu, który wskazaliśmy w pliku konfiguracyjnym aby w nim były przechowywane pliki zawierające dane dotyczące zmian w bazie i tam znajdziemy nasz nowo utworzony plik.

Gdy go otworzymy zobaczymy kod podobny do tego poniżej:

Teraz musimy wypełnić kodem dwie zdefiniowane funkcje. Tak więc do funkcji up() należy wstawić kod, który będzie wprowadzał nasze zmiany do bazy danych a funkcji down() kod wycofujący nasz zmiany. Uzupełnienie funkcji down() nie jest obowiązkowe ale gdybyśmy w przyszłości chcieli cofnąć zmiany wtedy wykonany zostanie właśnie kod z tej funkcji.

Aby utworzyć prostą tabelę składającą się z dwóch kolumn do funkcji up() należy Wstawić następujący kod:

Prawda, że proste?

Pytanie jednak gdzie w tej definicji tabeli podział się klucz główny? Otóż nie trzeba go definiować jawnie – jest dodawany automatycznie (w postaci kolumny o nazwie id). Można to oczywiście zmienić i nową tabelę utworzyć w następujący sposób:

Kolejne pytanie jakie może się nasunąć to: dlaczego typ pola zapisujemy jako integer a nie int lub string a nie varchar? Takie rozwiązanie było wymuszone tym, że Ruckusing obsługuje kilka typów baz danych a nie wszystko w nich definiuje się tak samo. Przykładowo gdy będziemy chcieli utworzyć kolumnę z typem boolean to w PostgreSql istnieje specjalny typ (i można stosować wartości TRUE/FALSE ale nie tylko) a w przypadku MySql aby zasymulować pole typu boolean można użyć kolumny typu BIT lub TINYINT o długości 1 ponieważ sam MySql nie obsługuje w pełni tego typu. Tak więc gdy będziemy definiować tabelę i dodamy taką linijkę kodu:

to w przypadku MySql ten fragment PHP zostanie zamieniony na:

a w przypadku PostgreSql na:

Pełną lista typów i informacje jak przekłada się to na konkretną bazę danych można znaleźć tutaj.

Oczywiście definiowanie tabel nie sprowadza się tylko do prostego dodawania kolumn jak pokazałem powyżej. Dodatkowe ustawienia można podać w ostatnim parametrze funkcji create_table lub column, który jest tablicą asocjacyjną. Poniżej lista parametrów jakie możesz dodatkowo ustawić podczas tworzenie tabeli lub kolumny:

Dodatkowe parametry podczas tworzenia kolumny

Nazwa Objaśnienie
limit int – odpowiada za długość pola
primary_key boolean – decyduje, czy pole ma być kluczem głównym
null boolean – decyduje, czy pole może przyjmować wartość NULL
default zależnie do typu pola – domyślna wartość pola
unsigned boolean – decyduje, czy pole ma przechowywać wartości ujemne
collate metoda porównywania znaków
character symbole i kodowanie znaków
precision
scale liczba miejsc po przecinku w przypadku pól float i decoimal

\

Dodatkowe parametry podczas tworzenia tabel

Nazwa Objaśnienie
Id boolean – decyduje o tym, czy podczas tworzenia tabeli automatycznie będzie tworzony klucz główny o nazwie id
options służy dodawania dodatkowych parametrów takich jak np. Engine=InnoDB, AUTO_INCREMENT=5 etc

\

A teraz jeszcze słów kilka o funkcji finish(). Przyjmuje ona jeden argument, który domyślnie ma wartość FALSE. W takim przypadku funkcja zwróci TRUE lub FALSE w zależności od tego czy tabela zostanie utworzona czy nie. Gdy parametr ten zostanie ustawiony na TRUE, funkcja zwróci kod SQL, który zostanie użyty do stworzenia tabeli, jednak sama tabela nie zostanie utworzona.

Teraz chcesz usnąć tabelę?

Teraz zajmiemy się funkcją down(). Tutaj sprawa jest bardzo prosta aby cofnąć zmiany, które opisaliśmy w funkcji up() należy usunąć opisaną wcześniej tabelę. W tym celu wykonujemy następujący kod:

I to wszystko 😉

Zmiany opisane – co dalej?

Gdy już zmiany zostały opisane w klasie należy wrócić do CLI i ponownie w głównym katalogu biblioteki wykonujemy następujące polecenie:

I po chwili powinna pojawić się informacja o tym, że zmiany zostały wprowadzone. I tak w zasadzie wygląda cały proces pracy z biblioteką.

(Aktualizacja) Zmiana nazwy tabeli

Napisałem już o tworzeniu i usuwaniu bazy danych więc dla pełnego obrazu wspomnę jeszcze o tym jak można zmienić jej nazwę. Aby tego dokonać należy użyć metody rename_table:

To wszystko?

W tej części tak. Oczywiście sama biblioteka ma znacznie więcej możliwość i w następnej części opiszę kolejne możliwości tej biblioteki. Do przeczytania już wkrótce!

Posty które mogą Cię zainteresować:

Dodaj komentarz

Your email address will not be published. Please enter your name, email and a comment.