At first you have to setup extension.
extensions:
dbal: Nettrine\Dbal\DI\DbalExtension
There are also some bridges as Symfony\Console. You'll known in next sections.
Minimal configuration could looks like this.
dbal:
debug: %debugMode%
connection:
host: localhost
driver: mysqli
dbname: nettrine
user: root
password: root
Full configuration options:
dbal:
debug: %debugMode%
configuration:
sqlLogger: NULL
resultCacheImpl: NULL
filterSchemaAssetsExpression: NULL
autoCommit: TRUE
connection:
url: NULL
pdo: NULL
memory: NULL
driver: pdo_mysql
driverClass: NULL
host: NULL
dbname: NULL
servicename: NULL
user: NULL
password: NULL
charset: UTF8
portability: PortabilityConnection::PORTABILITY_ALL
fetchCase: PDO::CASE_LOWER
persistent: TRUE
types: []
typesMapping: []
wrapperClass: NULL
Here is a example how to custom type. For more information, follow the official documention.
- http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/types.html
- http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/cookbook/custom-mapping-types.html
dbal:
connection:
types:
uuid_binary_ordered_time:
class: Ramsey\Uuid\Doctrine\UuidBinaryOrderedTimeType
commented: falsee
typesMapping:
uuid_binary_ordered_time: binary
You can use native Doctrine DBAL event system.
services:
subscriber1:
class: App\PostConnectSubscriber
tags: [nettrine.subscriber]
Register and create your own subscribers. There're services, so constructor injection will works. There're also loaded lazily, don't worry about performance.
namespace App;
use Doctrine\Common\EventSubscriber;
use Doctrine\DBAL\Event\ConnectionEventArgs;
use Doctrine\DBAL\Events;
final class PostConnectSubscriber implements EventSubscriber
{
public function postConnect(ConnectionEventArgs $args): void
{
// Magic goes here...
}
public function getSubscribedEvents(): array
{
return [Events::postConnect];
}
}
Don't waste time to tag single service and tag them all together using decorator.
decorator:
Doctrine\Common\EventSubscriber:
tags: [nettrine.subscriber]
This package works pretty well with Symfony/Console. Take a look at Contributte/Console tiny integration for Nette Framework.
extensions:
# Console
console: Contributte\Console\DI\ConsoleExtension
# Dbal
dbal: Nettrine\Dbal\DI\DbalExtension
dbal.console: Nettrine\Dbal\DI\DbalConsoleExtension(%consoleMode%)
From this moment when you type bin/console
, there'll be registered commands from Doctrine DBAL.