Veritabanı Yapılandırması
Nette Database'in yapılandırma seçeneklerine genel bakış.
Framework'ün tamamını değil yalnızca bu kütüphaneyi kullanıyorsanız, yapılandırmanın nasıl yükleneceğini okuyun.
Tek Bağlantı
Tek bir veritabanı bağlantısını yapılandırın:
database:
# DSN, tek zorunlu anahtar
dsn: "sqlite:%appDir%/Model/demo.db"
user: ...
password: ...
Bu, genellikle autowiring ile ya da adlarına başvurarak aktarılan Nette\Database\Connection ve
Nette\Database\Explorer servislerini oluşturur.
Diğer ayarlar:
database:
# veritabanı paneli Tracy Bar'da gösterilsin mi?
debugger: ... # (bool) Tracy etkinse varsayılan olarak açık
# sorgunun EXPLAIN çıktısı Tracy Bar'da gösterilsin mi?
explain: ... # (bool) varsayılan true
# bu bağlantı için autowiring açık olsun mu?
autowired: ... # (bool) ilk bağlantı için varsayılan true
# tablo uzlaşımları: discovered, static ya da sınıf adı
conventions: discovered # (string) varsayılan 'discovered'
options:
# veritabanına yalnızca gerektiğinde bağlanılsın mı?
lazy: ... # (bool) varsayılan false
# PHP veritabanı sürücüsü sınıfı
driverClass: # (string)
# yalnızca MySQL: sql_mode ayarlar
sqlmode: # (string)
# yalnızca MySQL: SET NAMES ayarlar
charset: # (string) varsayılan 'utf8mb4'
# yalnızca MySQL: TINYINT(1) değerini bool'a dönüştürür
convertBoolean: # (bool) varsayılan false
# tarih sütunlarını değişmez nesneler olarak döndürür (3.2.1 sürümünden beri)
newDateTime: # (bool) varsayılan false
# yalnızca Oracle ve SQLite: tarihi saklama biçimi
formatDateTime: # (string) varsayılan 'U'
options anahtarı, PDO sürücü belgelerinde bulunan
başka seçenekleri de içerebilir, örneğin:
database:
options:
PDO::MYSQL_ATTR_COMPRESS: true
Birden Çok Bağlantı
Yapılandırmada, adlandırılmış bölümlere ayırarak birden çok veritabanı bağlantısı tanımlayabiliriz:
database:
main:
dsn: 'mysql:host=127.0.0.1;dbname=test'
user: root
password: password
another:
dsn: 'sqlite::memory:'
Autowiring yalnızca ilk bölümdeki servisler için açıktır. Bu, autowired: false ya da
autowired: true ile değiştirilebilir.
DI Servisleri
DI container'a şu servisler eklenir; ### bağlantının adını temsil eder:
| Ad | Tür | Açıklama |
|---|---|---|
database.###.connection |
Nette\Database\Connection | veritabanı bağlantısı |
database.###.explorer |
Nette\Database\Explorer | Database Explorer |
Yalnızca bir bağlantı tanımlarsak servis adları database.default.connection ve
database.default.explorer olur. Yukarıdaki örnekteki gibi birden çok bağlantı tanımlarsak adlar bölümlere
karşılık gelir; yani database.main.connection, database.main.explorer, ayrıca
database.another.connection ve database.another.explorer.
Autowiring'e girmeyen servisleri, adlarına başvurarak açıkça aktarırız:
services:
- UserFacade(@database.another.connection)