@@ -47,6 +47,7 @@ public function __construct(Container $container)
4747 $ configuration = $ container ->get ('doctrine.configuration ' );
4848 $ connections = [];
4949 $ managers = [];
50+ $ types = [];
5051
5152 foreach ($ configuration as $ name => $ params ) {
5253 $ connections [$ name ] = sprintf ('doctrine.connection.%s ' , $ name );
@@ -59,10 +60,15 @@ public function __construct(Container $container)
5960 $ container ->set ($ managers [$ name ], factory (function ($ params ) {
6061 return $ this ->createManager ($ params );
6162 })->parameter ('params ' , $ params ));
63+
64+ if (!empty ($ params ['types ' ])) {
65+ $ types += $ params ['types ' ];
66+ }
6267 }
6368
6469 parent ::__construct ('ORM ' , $ connections , $ managers , key ($ connections ), key ($ managers ), Proxy::class);
6570
71+ $ this ->registerUserTypes ($ types );
6672 $ this ->registerUuidType ();
6773
6874 $ this ->container = $ container ;
@@ -194,6 +200,20 @@ private function createManager(array $params) : EntityManagerInterface
194200 return EntityManager::create ($ params ['connection ' ], $ config );
195201 }
196202
203+ /**
204+ * @param array $types
205+ *
206+ * @return void
207+ */
208+ private function registerUserTypes (array $ types ) : void
209+ {
210+ foreach ($ types as $ name => $ class ) {
211+ Type::hasType ($ name ) ?
212+ Type::overrideType ($ name , $ class ) :
213+ Type::addType ($ name , $ class );
214+ }
215+ }
216+
197217 /**
198218 * @return void
199219 */
0 commit comments