Choď na navigáciu

Pripojujeme sa k databáze

V tomto článku si ukážeme pokročilú prácu s pripojením k databáze v CakePHP. Ukážeme si, ako sa pripojiť cez socket alebo ako si nakonfigurovať niekoľko databázových pripojení a následne ich používať.

Definujeme pripojenie k databáze

Databázové spojenie sa v CakePHP definuje v súbore app/config/da­tabase.php. Po rozbalení balíku s inštaláciou Cake treba najprv daný súbor premenovať a to z app/config/da­tabase.php.de­fault na spomínaný názov app/config/da­tabase.php. Po otvorení daného súboru máme k dispozícii preddefinované 2 pripojenia a to defaulttest
class DATABASE_CONFIG {
        var $default = array(
                'driver' => 'mysql',
                'persistent' => false,
                'host' => 'localhost',
                'port' => '',
                'login' => 'user',
                'password' => 'password',
                'database' => 'database_name',
                'schema' => '',
                'prefix' => '',
                'encoding' => ''
        );
        var $test = array(
                'driver' => 'mysql',
                'persistent' => false,
                'host' => 'localhost',
                'port' => '',
                'login' => 'user',
                'password' => 'password',
                'database' => 'test_database_name',
                'schema' => '',
                'prefix' => '',
                'encoding' => ''
        );
}
?>

Poďme si priblížiť základné konfiguračné možnosti.

driver → umožňuje zadať k akému typu databáze sa ideme pripájať. Podporované sú typy mysql, mysqli, sqlite, postgres , mssql, db2, oracle, adodb-[drivername], pear-[drivername].
host → adresa databázového servera.
port → určuju port, cez ktorý sa môžeme k databáze pripojiť.
prefix → umožňuje určiť prefix v názvoch tabuliek v databáze. Využitie nájdeme v prípade, že v jednej databáze máme niekoľko projektov a jednotlivé tabuľky daných projektov by sme chceli od seba jednoznačne odlíšiť daným prefixom.
encoding → umožňuje nastaviť kódovanie spojenia k vašej databáze.

Ako môžeme vidieť, Cake podporuje pripojenie k najpoužívanejším databázovým systémom v súčasnosti. Ak by sa však v danom zozname typ nášho databázového systému nenachádzal, môžeme si vytvoriť vlastný driver alebo prepísať existujúci. Urobíme to jednoducho vytvorením súboru v app/models/da­tasources/dbo a pomenovaním daného súboru dbo_x.php, kde x je názov nášho databázového systému.

Používame databázové pripojenia

Ako môžeme vidieť, v našom súbore app/config/da­tabase.php máme definované 2 pripojenia a to default a test. Cake nám umožňuje jednoducho prepínať medzi týmito pripojeniami a tým určovať, aké pripojenie má naša aplikácia alebo konkrétny model používať. Táto vlastnosť CakePHP nám môže značne uľahčiť prácu a to najmä v prípade, ak testujeme našu web aplikáciu na localhoste a zároveň aj priamo na nejakom webhostingu. Taktiež nám môže byť veľmi nápomocná v prípade, ak by sme chceli určiť, že niektorý model bude získavať dáta z inej databáze ako zvyšné modely.

Poďme si to ukázať na príklade. Našej aplikácii chceme určiť, aby používala pripojenie nazvané test, ktoré sme definovali v súbore app/config/da­tabase.php. Do súboru app/app_model.php umiestníme nasledovné

class AppModel extends Model{
        var $useDbConfig = 'test';
}

Týmto sme našej aplikácii určili, že všetky modely sa budú pripájať k databáze prostredníctvom pripojenia nazvaného test. Teraz si predstavme situáciu, že chceme zmeniť pripojenie iba pre konkrétny model. V tomto prípade nám stačí pripojenie definovať iba v našom konkrétnom modely

class MyModel extends Model{
        var $useDbConfig = 'test2';
}

Týmto sme určili, že model s názvom MyModel sa bude pripájať k databáze prostredníctvom pripojenia nazvaného test2.

Ešte by som poznamenal, že ak máme definované pripojenie s názvom default a našej aplikácii explicitne neurčíme, že máme používať iné pripojenie, Cake automaticky pre pripojenie k databáze vyberie pripojenie nazvané default.

Pripájame sa cez socket

V súčasnosti množstvo webhostingov umožňuje pripojenie k vašej databáze prostredníctvom tzv. socketu. Riešenie v Cake je veľmi jednoduché. Predstavme si, že sa k našej databáze chceme pripojiť cez socket, ku ktorému vedie takáto cesta /tmp/mysql50.soc­k. Do súboru app/config/da­tabase.php následne umiestníme

var $default = array(
                'driver' => 'mysql',
                'connect' => 'mysql_connect',
                'persistent' => false,
                'host' => 'localhost',
                'login' => 'login',
                'password' => 'password',
                'database' => 'db',
                'port' => '/tmp/mysql50.sock',
                'prefix' => '',
                'encoding' => 'utf8'
        );

Ako môžeme vidieť, cestu k nášmu socketu stačí zadať do kolonky port a všetko bude fungovať správne. Týmto je náš článok u konca. V článku som sa snažil čo najjednoduchšie zhrnúť možnosti CakePHP v súvislosti s pripojením k databázam.

Rád uvítam vaše námety a pripomienky v diskusii k článku.

Povedz o článku aj ostatným - www.pridej.cz

Hodnotenie článku: 52%
Počet hodnotení: 61

zlýdobrý

Komentáre k článku

Nový komentár

  1. Nie sú vytvorené žiadne komentáre