Nette Documentation Preview

syntax
Veritabanını Yapılandırma
*************************

.[perex]
Nette Veritabanı için yapılandırma seçeneklerine genel bakış.

Tüm çerçeveyi değil, yalnızca bu kütüphaneyi kullanıyorsanız, [yapılandırmayı nasıl yükleyeceğinizi |bootstrap:] okuyun.


Tek Bağlantı .[#toc-single-connection]
--------------------------------------

Tek bir veritabanı bağlantısı yapılandırın:

```neon
database:
	# DSN, yalnızca zorunlu anahtar
	dsn: "sqlite:%appDir%/Model/demo.db"
	user: ...
	password: ...
```

Genellikle [otomatik kablolama |dependency-injection:autowiring] veya [adlarına |#DI Services] atıfta bulunarak geçirilen `Nette\Database\Connection` ve `Nette\Database\Explorer` hizmetlerini oluşturur.

Diğer ayarlar:

```neon
database:
	# Tracy Bar'da veritabanı panelini gösterir mi?
	debugger: ...     # (bool) varsayılan değer true

	# Tracy Bar'da EXPLAIN sorgusunu gösterir?
	explain: ...      # (bool) varsayılan olarak true

	# bu bağlantı için otomatik kablolamayı etkinleştirmek için?
	autowired: ...    # (bool) ilk bağlantı için varsayılan değer true

	# tablo kuralları: keşfedilmiş, statik veya sınıf adı
	conventions: discovered # (string) varsayılan olarak 'discovered'

	options:
		# veritabanına yalnızca gerektiğinde bağlanmak için?
		lazy: ...     # (bool) varsayılan değer false

		# PHP veritabanı sürücü sınıfı
		driverClass:  # (string)

		# sadece MySQL: sql_mode'u ayarlar
		sqlmode:      # (string)

		# sadece MySQL: SET NAMES setleri
		charset:      # (string) varsayılan olarak 'utf8mb4' ('utf8' v5.5.3'ten önce)

		# sadece MySQL: TINYINT(1)'i bool'a dönüştürür
		supportBooleans: # (bool) varsayılan değer false

		# sadece Oracle ve SQLite: tarih biçimi
		formatDateTime: # (string) varsayılan değer 'U'
```

`options` anahtarı, [PDO sürücü belgelerinde |https://www.php.net/manual/en/pdo.drivers.php] bulunabilecek diğer seçenekleri içerebilir, örneğin:

```neon
database:
	options:
		PDO::MYSQL_ATTR_COMPRESS: true
```


Çoklu Bağlantılar .[#toc-multiple-connections]
----------------------------------------------

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

```neon
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 hizmetler için etkinleştirilir. Bu, `autowired: false` veya `autowired: true` kullanılarak değiştirilebilir.


DI Hizmetleri .[#toc-di-services]
---------------------------------

Bu hizmetler DI konteynerine eklenir, burada `###` bağlantı adını temsil eder:

| Ad | Tür | Açıklama
|----------------------------------------------------------
| `database.###.connection` | [api:Nette\Database\Connection] | veritabanı bağlantısı
| `database.###.explorer` | [api:Nette\Database\Explorer] | [Database Explorer |explorer]


Yalnızca bir bağlantı tanımlarsak, hizmet 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 gelecektir, yani `database.main.connection`, `database.main.explorer` ve ardından `database.another.connection` ve `database.another.explorer`.

Kimliği doğrulanmamış hizmetleri adlarına atıfta bulunarak açıkça iletiriz:

```neon
services:
	- UserFacade(@database.another.connection)
```

Veritabanını Yapılandırma

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

Tüm çerçeveyi değil, yalnızca bu kütüphaneyi kullanıyorsanız, yapılandırmayı nasıl yükleyeceğinizi okuyun.

Tek Bağlantı

Tek bir veritabanı bağlantısı yapılandırın:

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

Genellikle otomatik kablolama veya adlarına atıfta bulunarak geçirilen Nette\Database\Connection ve Nette\Database\Explorer hizmetlerini oluşturur.

Diğer ayarlar:

database:
	# Tracy Bar'da veritabanı panelini gösterir mi?
	debugger: ...     # (bool) varsayılan değer true

	# Tracy Bar'da EXPLAIN sorgusunu gösterir?
	explain: ...      # (bool) varsayılan olarak true

	# bu bağlantı için otomatik kablolamayı etkinleştirmek için?
	autowired: ...    # (bool) ilk bağlantı için varsayılan değer true

	# tablo kuralları: keşfedilmiş, statik veya sınıf adı
	conventions: discovered # (string) varsayılan olarak 'discovered'

	options:
		# veritabanına yalnızca gerektiğinde bağlanmak için?
		lazy: ...     # (bool) varsayılan değer false

		# PHP veritabanı sürücü sınıfı
		driverClass:  # (string)

		# sadece MySQL: sql_mode'u ayarlar
		sqlmode:      # (string)

		# sadece MySQL: SET NAMES setleri
		charset:      # (string) varsayılan olarak 'utf8mb4' ('utf8' v5.5.3'ten önce)

		# sadece MySQL: TINYINT(1)'i bool'a dönüştürür
		supportBooleans: # (bool) varsayılan değer false

		# sadece Oracle ve SQLite: tarih biçimi
		formatDateTime: # (string) varsayılan değer 'U'

options anahtarı, PDO sürücü belgelerinde bulunabilecek diğer seçenekleri içerebilir, örneğin:

database:
	options:
		PDO::MYSQL_ATTR_COMPRESS: true

Çoklu Bağlantılar

Yapılandırmada, adlandırılmış bölümlere ayırarak daha fazla 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:'

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

DI Hizmetleri

Bu hizmetler 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, hizmet 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 gelecektir, yani database.main.connection, database.main.explorer ve ardından database.another.connection ve database.another.explorer.

Kimliği doğrulanmamış hizmetleri adlarına atıfta bulunarak açıkça iletiriz:

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