0 follower

Ustawienia bazy danych

Posiadając utworzony szkielet aplikacji oraz zakończony projekt bazy danych, zajmiemy się w tej części utworzeniem bazy danych dla bloga oraz ustanowieniem połączenie do niej we wspomnianym szkielecie aplikacji.

1. Tworzenie bazy danych

Zdecydowaliśmy się utworzyć bazę danych SQLite. Ponieważ wsparcie dla baz danych opiera się na PDO, możemy bardzo łatwo przełączać się pomiędzy używaniem różnych typów baz danych (np. MySQL, PostgreSQL) bez potrzeby dokonywania zmian w kodzie aplikacji.

Utworzyliśmy plik bazy danych blog.db w katalogu /wwwroot/blog/protected/data. Zauważ, że wymagania SQLLite, powodują że zarówno katalog jak i plik bazy danych powinny być zapisywalne przez proces serwera. Można po prostu skopiować plik bazy danych z dema blogu znajdującego się w instalacji Yii w /wwwroot/yii/demos/blog/protected/data/blog.db. Możemy również wygenerować bazę danych poprzez wykonanie zapytań SQL zawartych w pliku /wwwroot/yii/demos/blog/protected/data/schema.sqlite.sql.

Wskazówka: aby móc wykonywać wyrażenia SQL, możemy używać narzędzia linii poleceń sqlite3, które można znaleźć na oficjalnej stronie SQLite.

2. Ustanawianie połączenia z bazą danych

Aby używać bazę danych blogu w utworzonym szkielecie aplikacji, musimy zmodyfikować jego konfigurację aplikacji która przechowywana jest jako skrypt PHP /wwwroot/blog/protected/config/main.php. Skrypt zwraca asocjacyjną tablicę zawierającą pary nazwa-wartość, z których każda używana jest do zainicjalizowania właściwości instancji aplikacji.

Skonfigurujemy właściwość components aplikacji poprzez dodanie do niej nowego wpisu nazwanego db w następujący sposób,

return array(
    ......
    'components'=>array(
        ......
        'db'=>array(
            'class'=>'CDbConnection',
            'connectionString'=>'sqlite:/wwwroot/blog/protected/data/blog.db',
        ),
    ),
    ......
);

Powyższa konfiguracja mówi nam, że posiadamy komponent aplikacji db, którego klasą jest CDbConnection i którego właściwość connectionString powinna zostać zainicjalizowana wartością sqlite:/wwwroot/blog/protected/data/blog.db.

Przy użyciu tej konfiguracji, możemy uzyskać dostęp do obiektu połączenia z bazą danych przy użyciu wyrażenia Yii::app()->db w dowolnym miejscu naszego kodu. Zauważ, że Yii::app() zwraca instancję aplikacji, którą utworzyliśmy w skrypcie wejściowym. Jeśli jesteś zainteresowany poznaniem metod posiadanych przez połączenie DB oraz jego właściwościami, możesz udać się do dokumentacji klas. Jednakże w większości przypadków nie będziemy używali tego połączenia z bazą danych wprost. W zamian, będziemy używać tak zwanego rekordu aktywnego w celu uzyskania dostępu do bazy danych.