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)
versiyon: 4.x