データベース設定
Nette Databaseの設定オプションの概要。
フレームワーク全体ではなく、このライブラリのみを使用している場合は、設定を読み込む方法 を読んでください。
単一接続
単一のデータベース接続の設定:
database:
# DSN、唯一の必須キー
dsn: "sqlite:%appDir%/Model/demo.db"
user: ...
password: ...
Nette\Database\Connection
と Nette\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.connection
と
database.default.explorer
になります。上記の例のように複数の接続を定義する場合、名前はセクションに対応します。つまり、database.main.connection
、database.main.explorer
、さらに
database.another.connection
と database.another.explorer
です。
Autowiringされていないサービスは、その名前への参照によって明示的に渡します:
services:
- UserFacade(@database.another.connection)