Veritabanı yapılandırması

Nette Database için yapılandırma seçeneklerine genel bakış.

Tüm framework'ü değil de 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ın yapılandırılması:

database:
	# DSN, tek zorunlu anahtar
	dsn: "sqlite:%appDir%/Model/demo.db"
	user: ...
	password: ...

Genellikle otomatik kablolama ile ilettiğimiz Nette\Database\Connection ve Nette\Database\Explorer servislerini oluşturur veya adlarına bir referansla.

Diğer ayarlar:

database:
	# Tracy Bar'da veritabanı panelini göster?
	debugger: ...     # (bool) varsayılan true'dur

	# Tracy Bar'da sorguların EXPLAIN'ini göster?
	explain: ...      # (bool) varsayılan true'dur

	# Bu bağlantı için otomatik kablolamaya izin ver?
	autowired: ...    # (bool) ilk bağlantı için varsayılan true'dur

	# tablo kuralları: discovered, static veya sınıf adı
	conventions: discovered  # (string) varsayılan 'discovered'

	options:
		# veritabanına yalnızca gerektiğinde bağlan?
		lazy: ...     # (bool) varsayılan false'dur

		# Veritabanı sürücüsü PHP 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)'i bool'a dönüştürür
		convertBoolean:  # (bool) varsayılan false'dur

		# tarih içeren sütunları değişmez nesneler olarak döndürür (sürüm 3.2.1'den itibaren)
		newDateTime:  # (bool) varsayılan false'dur

		# yalnızca Oracle ve SQLite: tarih kaydetme formatı
		formatDateTime: # (string) varsayılan 'U'

options anahtarında, PDO sürücü belgelerinde bulabileceğiniz diğer seçenekleri belirtebilirsiniz, örneğin:

database:
	options:
		PDO::MYSQL_ATTR_COMPRESS: true

Çoklu bağlantılar

Yapılandırmada, adlandırılmış bölümlere ayırarak birden fazla veritabanı bağlantısı da tanımlayabiliriz:

database:
	main:
		dsn: 'mysql:host=127.0.0.1;dbname=test'
		user: root
		password: password

	another:
		dsn: 'sqlite::memory:'

Otomatik kablolama yalnızca ilk bölümdeki servisler için etkindir. Bu, autowired: false veya autowired: true kullanılarak değiştirilebilir.

DI Servisleri

Bu servisler DI konteynerine eklenir, burada ### bağlantı 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 olacaktır. Yukarıdaki örnekte olduğu gibi birden fazla bağlantı tanımlarsak, adlar bölümlere karşılık gelir, yani database.main.connection, database.main.explorer ve ayrıca database.another.connection ve database.another.explorer.

Otomatik olarak kablolanmayan servisleri adlarına açık bir referansla iletiriz:

services:
	- UserFacade(@database.another.connection)
versiyon: 4.0