データベースの設定

Nette Database の設定オプションの一覧です。

フレームワーク全体ではなくこのライブラリだけを使っているなら、設定の読み込み方をご覧ください。

ひとつの接続

ひとつのデータベース接続を設定します。

database:
	# DSN。唯一の必須のキーです
	dsn: "sqlite:%appDir%/Model/demo.db"
	user: ...
	password: ...

これで Nette\Database\ConnectionNette\Database\Explorer のサービスが作られ、ふつうはオートワイヤリングで、あるいはその名前を指定して渡されます。

そのほかの設定です。

database:
	# Tracy Bar にデータベースのパネルを表示しますか
	debugger: ...     # (bool) Tracy が動いていれば既定でオン

	# Tracy Bar にクエリの EXPLAIN を表示しますか
	explain: ...      # (bool) 既定は true

	# この接続でオートワイヤリングを有効にしますか
	autowired: ...    # (bool) 最初の接続では既定で true

	# テーブルの規約: discovered、static、またはクラス名
	conventions: discovered  # (string) 既定は 'discovered'

	options:
		# 必要になったときだけデータベースに接続しますか
		lazy: ...     # (bool) 既定は false

		# PHP のデータベースドライバのクラス
		driverClass:  # (string)

		# MySQL のみ: sql_mode を設定します
		sqlmode:      # (string)

		# MySQL のみ: SET NAMES を設定します
		charset:      # (string) 既定は 'utf8mb4'

		# MySQL のみ: TINYINT(1) を bool に変換します
		convertBoolean: # (bool) 既定は false

		# 日付の列を変更できないオブジェクトとして返します(バージョン 3.2.1 以降)
		newDateTime:  # (bool) 既定は false

		# Oracle と SQLite のみ: 日付を保存する書式
		formatDateTime: # (string) 既定は 'U'

options キーには PDO ドライバのドキュメントにあるほかのオプションも書けます。たとえば次のようにです。

database:
	options:
		PDO::MYSQL_ATTR_COMPRESS: true

複数の接続

設定では、名前の付いた区画に分けて複数のデータベース接続を定義できます。

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

	another:
		dsn: 'sqlite::memory:'

オートワイヤリングが有効になるのは最初の区画のサービスだけです。これは autowired: falseautowired: true で変えられます。

DI のサービス

DI コンテナには次のサービスが足されます。### は接続の名前を表します。

名前 説明
database.###.connection Nette\Database\Connection データベース接続
database.###.explorer Nette\Database\Explorer Database Explorer

接続をひとつだけ定義した場合、サービスの名前は database.default.connectiondatabase.default.explorer になります。上の例のように複数の接続を定義した場合、名前は区画に対応して database.main.connectiondatabase.main.explorer、さらに database.another.connectiondatabase.another.explorer になります。

オートワイヤリングされないサービスは、その名前を指定してはっきり渡します。

services:
	- UserFacade(@database.another.connection)
バージョン: 4.x