データベースの設定
Nette Database の設定オプションの一覧です。
フレームワーク全体ではなくこのライブラリだけを使っているなら、設定の読み込み方をご覧ください。
ひとつの接続
ひとつのデータベース接続を設定します。
database:
# DSN。唯一の必須のキーです
dsn: "sqlite:%appDir%/Model/demo.db"
user: ...
password: ...
これで Nette\Database\Connection と Nette\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: 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 になります。
オートワイヤリングされないサービスは、その名前を指定してはっきり渡します。
services:
- UserFacade(@database.another.connection)