Nette Documentation Preview

syntax
データベース設定
********

.[perex]
Nette Databaseの設定オプションの概要。

フレームワーク全体ではなく、このライブラリのみを使用している場合は、[設定を読み込む方法|bootstrap:] を読んでください。


単一接続
----

単一のデータベース接続の設定:

```neon
database:
	# DSN、唯一の必須キー
	dsn: "sqlite:%appDir%/Model/demo.db"
	user: ...
	password: ...
```

`Nette\Database\Connection` と `Nette\Database\Explorer` サービスを作成します。これらは通常、[autowiring |dependency-injection:autowiring] によって渡されるか、[その名前 |#DI サービス] への参照によって渡されます。

その他の設定:

```neon
database:
	# Tracy Bar にデータベースパネルを表示しますか?
	debugger: ...     # (bool) デフォルトはtrue

	# Tracy Bar にクエリの EXPLAIN を表示しますか?
	explain: ...      # (bool) デフォルトはtrue

	# この接続に対して autowiring を許可しますか?
	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

		# 日付カラムを immutable オブジェクトとして返します (バージョン 3.2.1 以降)
		newDateTime:  # (bool) デフォルトはfalse

		# Oracle と SQLite のみ: 日付の保存形式
		formatDateTime: # (string) デフォルトは 'U'
```

`options` キーには、[PDO ドライバのドキュメント |https://www.php.net/manual/en/pdo.drivers.php] に記載されているその他のオプションを指定できます。例:

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


複数接続
----

設定では、名前付きセクションに分割することで、複数のデータベース接続を定義することもできます:

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

	another:
		dsn: 'sqlite::memory:'
```

Autowiringは最初のセクションのサービスに対してのみ有効です。これは `autowired: false` または `autowired: true` を使用して変更できます。


DI サービス
-------

これらのサービスはDIコンテナに追加されます。ここで `###` は接続名を表します:

| 名前           | 型                        | 説明
|----------------------------------------------------------
| `database.###.connection`  |  [api:Nette\Database\Connection]  |  データベース接続
| `database.###.explorer`  |  [api:Nette\Database\Explorer]      |  [Database Explorer |explorer]


単一の接続のみを定義する場合、サービス名は `database.default.connection` と `database.default.explorer` になります。上記の例のように複数の接続を定義する場合、名前はセクションに対応します。つまり、`database.main.connection`、`database.main.explorer`、さらに `database.another.connection` と `database.another.explorer` です。

Autowiringされていないサービスは、その名前への参照によって明示的に渡します:

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

データベース設定

Nette Databaseの設定オプションの概要。

フレームワーク全体ではなく、このライブラリのみを使用している場合は、設定を読み込む方法 を読んでください。

単一接続

単一のデータベース接続の設定:

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

Nette\Database\ConnectionNette\Database\Explorer サービスを作成します。これらは通常、autowiring によって渡されるか、その名前 への参照によって渡されます。

その他の設定:

database:
	# Tracy Bar にデータベースパネルを表示しますか?
	debugger: ...     # (bool) デフォルトはtrue

	# Tracy Bar にクエリの EXPLAIN を表示しますか?
	explain: ...      # (bool) デフォルトはtrue

	# この接続に対して autowiring を許可しますか?
	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

		# 日付カラムを immutable オブジェクトとして返します (バージョン 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:'

Autowiringは最初のセクションのサービスに対してのみ有効です。これは autowired: false または autowired: 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 です。

Autowiringされていないサービスは、その名前への参照によって明示的に渡します:

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