Configuring Database

Overview of configuration options for the Nette Database.

If you are not using the whole framework, but only this library, read how to load the configuration.

Single Connection

Configure a single database connection:

database:
	# DSN, only mandatory key
	dsn: "sqlite:%appDir%/Model/demo.db"
	user: ...
	password: ...

It creates services of type Nette\Database\Connection and also Nette\Database\Explorer for the Database Explorer layer. The database connection is usually passed by autowiring, if this is not possible, use the service names @database.default.connection resp. @database.default.explorer.

Other settings:

database:
	# shows database panel in Tracy Bar?
	debugger: ...     # (bool) defaults to true

	# shows query EXPLAIN in Tracy Bar?
	explain: ...      # (bool) defaults to true

	# to enable autowiring for this connection?
	autowired: ...    # (bool) defaults to true for first connection

	# table conventions: discovered, static, or class name
	conventions: discovered  # (string) defaults to 'discovered'

	options:
		# to connect to the database only when needed?
		lazy: ...     # (bool) defaults to false

		# PHP database driver class
		driverClass:  # (string)

		# only MySQL: sets sql_mode
		sqlmode:      # (string)

		# only MySQL: sets SET NAMES
		charset:      # (string) defaults to 'utf8mb4' ('utf8' before v5.5.3)

		# only Oracle and SQLite: date format
		formatDateTime: # (string) defaults to 'U'

The options key can contain other options that can be found in the PDO driver documentation, such as:

database:
	options:
		PDO::MYSQL_ATTR_COMPRESS: true

Multiple Connections

In the configuration we can define more database connections by dividing them into named sections:

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

	another:
		dsn: 'sqlite::memory:'

Each defined connection creates services that includes section name in their name, ie @database.main.connection & @database.main.explorer and further @database.another.connection & @database.another.explorer.

Autowiring is enabled only for services from the first section. This can be changed with autowired: false or autowired: true. Non-autowired services are passed by name:

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