Configuration

Register a Custom DQL Function

1namespace Db; return [ 'doctrine' => [ 'configuration' => [ 'orm_default' => [ 'numeric_functions' => [ 'ROUND' => Db\DoctrineExtensions\Query\Mysql\Round::class, ], ], ], ], ];
2
3
4
5
6
7
8
9
10
11
12
13

Register a Type mapping

1return [ 'doctrine' => [ 'connection' => [ 'orm_default' => [ 'doctrine_type_mappings' => [ 'enum' => 'string', ], ], ], ], ];
2
3
4
5
6
7
8
9
10
11

How to add a new type

1return [ 'doctrine' => [ 'configuration' => [ 'orm_default' => [ 'types' => [ 'newtype' => 'Db\DBAL\Types\NewType', ], ], ], ], ];
2
3
4
5
6
7
8
9
10
11
1return [ 'doctrine' => [ 'connection' => [ 'orm_default' => [ 'doctrine_type_mappings' => [ 'mytype' => 'mytype', ], ], ], ], ];
2
3
4
5
6
7
8
9
10
11

Doctrine Type Comment

Option to set the doctrine type comment (DC2Type:myType) for custom types

1return [ 'doctrine' => [ 'connection' => [ 'orm_default' => [ 'doctrineCommentedTypes' => [ 'mytype', ], ], ], ], ];
2
3
4
5
6
7
8
9
10
11

Built-in Resolver

How to Define Relationships with Abstract Classes and Interfaces (ResolveTargetEntityListener)

1return [ 'doctrine' => [ 'entity_resolver' => [ 'orm_default' => [ 'resolvers' => [ 'Acme\\InvoiceModule\\Model\\InvoiceSubjectInterface', 'Acme\\CustomerModule\\Entity\\Customer', ], ], ], ], ];
2
3
4
5
6
7
8
9
10
11
12

Set a Custom Default Repository

1return [ 'doctrine' => [ 'configuration' => [ 'orm_default' => [ 'default_repository_class_name' => 'MyCustomRepository', ], ], ], ];
2
3
4
5
6
7
8
9

How to Use Two Connections

In this example we create an 'orm_crawler' ORM connection. See also this blog article.

1return [ 'doctrine' => [ 'connection' => [ 'orm_crawler' => [ 'driverClass' => 'Doctrine\DBAL\Driver\PDOMySql\Driver', 'eventmanager' => 'orm_crawler', 'configuration' => 'orm_crawler', 'params' => [ 'host' => 'localhost', 'port' => '3306', 'user' => 'root', 'password' => 'root', 'dbname' => 'crawler', 'driverOptions' => [ 1002 => 'SET NAMES utf8', ], ], ], ], 'configuration' => [ 'orm_crawler' => [ 'metadata_cache' => 'array', 'query_cache' => 'array', 'result_cache' => 'array', 'hydration_cache' => 'array', 'driver' => 'orm_crawler_chain', 'generate_proxies' => true, 'proxy_dir' => 'data/DoctrineORMModule/Proxy', 'proxy_namespace' => 'DoctrineORMModule\Proxy', 'filters' => [], ], ], 'driver' => [ 'orm_crawler_annotation' => [ 'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver', 'cache' => 'array', 'paths' => [ __DIR__ . '/../src/Crawler/Entity', ], ], 'orm_crawler_chain' => [ 'class' => 'Doctrine\ORM\Mapping\Driver\DriverChain', 'drivers' => [ 'Crawler\Entity' => 'orm_crawler_annotation', ], ], ], 'entitymanager' => [ 'orm_crawler' => [ 'connection' => 'orm_crawler', 'configuration' => 'orm_crawler', ], ], 'eventmanager' => [ 'orm_crawler' => [], ], 'sql_logger_collector' => [ 'orm_crawler' => [], ], 'entity_resolver' => [ 'orm_crawler' => [], ], ], ];
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70

The DoctrineModule\ServiceFactory\AbstractDoctrineServiceFactory will create the following objects as needed:

  • doctrine.connection.orm_crawler
  • doctrine.configuration.orm_crawler
  • doctrine.entitymanager.orm_crawler
  • doctrine.driver.orm_crawler
  • doctrine.eventmanager.orm_crawler
  • doctrine.entity_resolver.orm_crawler
  • doctrine.sql_logger_collector.orm_crawler

You can retrieve them from the service manager via their keys.

How to Use Naming Strategy

Official documentation

Zend Configuration

1return [ 'service_manager' => [ 'invokables' => [ 'Doctrine\ORM\Mapping\UnderscoreNamingStrategy' => 'Doctrine\ORM\Mapping\UnderscoreNamingStrategy', ], ], 'doctrine' => [ 'configuration' => [ 'orm_default' => [ 'naming_strategy' => 'Doctrine\ORM\Mapping\UnderscoreNamingStrategy', ], ], ], ];
2
3
4
5
6
7
8
9
10
11
12
13
14

How to Use Quote Strategy

Official documentation

Zend Configuration

1return [ 'service_manager' => [ 'invokables' => [ 'Doctrine\ORM\Mapping\AnsiQuoteStrategy' => 'Doctrine\ORM\Mapping\AnsiQuoteStrategy', ], ], 'doctrine' => [ 'configuration' => [ 'orm_default' => [ 'quote_strategy' => 'Doctrine\ORM\Mapping\AnsiQuoteStrategy', ], ], ], ];
2
3
4
5
6
7
8
9
10
11
12
13
14