Конфигурация на базата данни
Преглед на конфигурационните опции за Nette Database.
Ако не използвате целия framework, а само тази библиотека, прочетете как да заредите конфигурацията.
Една връзка
Конфигурация на една връзка към база данни:
database:
# DSN, единственият задължителен ключ
dsn: "sqlite:%appDir%/Model/demo.db"
user: ...
password: ...
Създава сървисите Nette\Database\Connection
и Nette\Database\Explorer
, които
обикновено предаваме чрез autowiring, или чрез връзка към тяхното име.
Други настройки:
database:
# покажи панела на базата данни в Tracy Bar?
debugger: ... # (bool) по подразбиране е true
# покажи EXPLAIN на заявките в Tracy Bar?
explain: ... # (bool) по подразбиране е true
# разреши autowiring за тази връзка?
autowired: ... # (bool) по подразбиране е true при първата връзка
# конвенции за таблици: discovered, static или име на клас
conventions: discovered # (string) по подразбиране е 'discovered'
options:
# свързване към базата данни само когато е необходимо?
lazy: ... # (bool) по подразбиране е false
# PHP клас на драйвера на базата данни
driverClass: # (string)
# само MySQL: задава sql_mode
sqlmode: # (string)
# само MySQL: задава SET NAMES
charset: # (string) по подразбиране е 'utf8mb4'
# само MySQL: преобразува TINYINT(1) в bool
convertBoolean: # (bool) по подразбиране е false
# връща колони с дата като immutable обекти (от версия 3.2.1)
newDateTime: # (bool) по подразбиране е false
# само Oracle и SQLite: формат за съхранение на дата
formatDateTime: # (string) по подразбиране е 'U'
В ключа options
могат да се посочват други опции, които ще
намерите в документацията на PDO
драйверите, като например:
database:
options:
PDO::MYSQL_ATTR_COMPRESS: true
Множество връзки
В конфигурацията можем да дефинираме и множество връзки към бази данни, като ги разделим на именувани секции:
database:
main:
dsn: 'mysql:host=127.0.0.1;dbname=test'
user: root
password: password
another:
dsn: 'sqlite::memory:'
Autowiring е включен само за сървисите от първата секция. Това може да се
промени с помощта на autowired: false
или autowired: true
.
DI Сървиси
Тези сървиси се добавят към DI контейнера, където ###
представлява името на връзката:
Име | Тип | Описание |
---|---|---|
database.###.connection |
Nette\Database\Connection | връзка с базата данни |
database.###.explorer |
Nette\Database\Explorer | Database Explorer |
Ако дефинираме само една връзка, имената на сървисите ще бъдат
database.default.connection
и database.default.explorer
. Ако дефинираме повече
връзки, както в примера по-горе, имената ще отговарят на секциите, т.е.
database.main.connection
, database.main.explorer
и след това
database.another.connection
и database.another.explorer
.
Сървисите, които не са autowired, предаваме изрично чрез връзка към тяхното име:
services:
- UserFacade(@database.another.connection)