/
configuration.texy
107 lines (73 loc) · 4.6 KB
/
configuration.texy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
Конфигуриране на базата данни
*****************************
.[perex]
Преглед на опциите за конфигуриране на базата данни Nette.
Ако не използвате цялата рамка, а само тази библиотека, прочетете [Как да изтеглите конфигурационния файл |bootstrap:].
Една връзка .[#toc-single-connection]
-------------------------------------
Създайте единична връзка към базата данни:
```neon
database:
# DSN, един задължителен ключ.
dsn: "sqlite:%appDir%/Model/demo.db"
user: ...
password: ...
```
Създава услугите `Nette\Database\Connection` и `Nette\Database\Explorer`, които обикновено се предават чрез [автоматично свързване |dependency-injection:autowiring] или чрез посочване на [името им |#DI Services].
Други настройки:
```neon
database:
# показва панела База данни в лентата Tracy Bar
debugger: ... # (bool) по подразбиране е true
# извежда заявка EXPLAIN в лентата на Tracy
explain: ... # (bool) по подразбиране е true
# разрешаване на автоматичното свързване за тази връзка
autowired: ... # (bool) по подразбиране е true за първата връзка
# конвенции за таблици: име на открит, статичен или клас
conventions: discovered # (string) 'discovered' по подразбиране
options:
# свързване с базата данни само при необходимост?
lazy: ... # (bool) по подразбиране е false
# Клас на PHP драйвера за бази данни
driverClass: # (string)
# само за MySQL: # задава sql_mode
sqlmode: # (string)
# само за MySQL: set SET NAMES
charset: # (string) по подразбиране е 'utf8mb4' ('utf8' преди v5.5.3)
# само за MySQL: преобразува TINYINT(1) в bool
supportBooleans: # (bool) по подразбиране е false
# само за Oracle и SQLite: formatDate
formatDateTime: # (string) по подразбиране е 'U'
```
Ключът `options` може да съдържа и други опции, които можете да намерите в [документацията на PDO драйвера |https://www.php.net/manual/en/pdo.drivers.php], напр:
```neon
база данных:
options:
PDO::MYSQL_ATTR_COMPRESS: true
```
Множество връзки .[#toc-multiple-connections]
---------------------------------------------
В конфигурацията можем да дефинираме повече връзки към базата данни, като ги разделим на именувани секции:
```neon
database:
main:
dsn: 'mysql:host=127.0.0.1;dbname=test'
user: root
password: password
another:
dsn: 'sqlite::memory:'
```
Автоматичното свързване е разрешено само за услугите от първия раздел. Това може да се промени с помощта на `autowired: false` или `autowired: true`.
Услуги на DI .[#toc-di-services]
--------------------------------
Тези услуги се добавят към контейнера DI, където `###` представлява името на връзката:
| Име | Тип | Описание
|----------------------------------------------------------
| `database.###.connection` | [api:Nette\Database\Connection] | връзка с база данни
| `database.###.explorer` | [api:Nette\Database\Explorer] | [Database Explorer |explorer]
Ако дефинираме само една връзка, имената на услугите ще бъдат `database.default.connection` и `database.default.explorer`. Ако дефинираме няколко връзки, както в примера по-горе, имената ще съответстват на разделите, т.е. `database.main.connection`, `database.main.explorer` и след това `database.another.connection` и `database.another.explorer`.
Неавтентифицираните услуги предаваме изрично, като се позоваваме на тяхното име:
```neon
services:
- UserFacade(@database.another.connection)
```