Налаштування бази даних
Огляд варіантів конфігурації для бази даних Nette.
Якщо ви використовуєте не весь фреймворк, а тільки цю бібліотеку, прочитайте Як завантажити файл конфігурації.
Одне підключення
Налаштуйте одне підключення до бази даних:
database:
# DSN, єдиний обов'язковий ключ
dsn: "sqlite:%appDir%/Model/demo.db"
user: ...
password: ...
Він створює служби типу Nette\Database\Connection
, а також
Nette\Database\Explorer
для рівня Database Explorer.
Підключення до бази даних зазвичай передається автопідключенням, якщо
це неможливо, використовуйте імена сервісів @database.default.connection
і
@database.default.context
.
Інші налаштування:
database:
# відображає панель Database у Tracy Bar
debugger: ... # (bool) за замовчуванням true
# відображає запит EXPLAIN у Tracy Bar
explain: ... # (bool) за замовчуванням true
# увімкнути автозв'язування для цього з'єднання
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' ('utf8' до v5.5.3)
# тільки для Oracle і SQLite: формат даті
formatDateTime: # (string) за замовчуванням 'U'
Ключ options
може містити інші опції, які можна знайти в документації щодо драйвера PDO,
наприклад:
база данных:
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:'
Кожне визначене з'єднання створює сервіси, що включають ім'я секції у
своє ім'я, тобто @database.main.connection
& @database.main.context
і далі
@database.another.connection
& @database.another.context
.
Автозв'язування ввімкнене тільки для сервісів із першої секції. Це
можна змінити за допомогою autowired: false
або autowired: true
.
Неавтоматизовані сервіси передаються за іменем:
services:
- UserFacade(@database.another.connection)