@@ -23,6 +23,7 @@ public function load(array $configs, ContainerBuilder $container)
2323
2424 $ container ->setAlias ('enqueue_elastica.context ' , $ config ['context ' ]);
2525
26+ $ doctrineDriver = $ config ['doctrine ' ]['driver ' ];
2627 if (false == empty ($ config ['doctrine ' ]['queue_listeners ' ])) {
2728 foreach ($ config ['doctrine ' ]['queue_listeners ' ] as $ listenerConfig ) {
2829 $ listenerId = sprintf (
@@ -36,9 +37,49 @@ public function load(array $configs, ContainerBuilder $container)
3637 ->addArgument (new Reference ('enqueue_elastica.context ' ))
3738 ->addArgument ($ listenerConfig ['model_class ' ])
3839 ->addArgument ($ listenerConfig )
39- ->addTag (' doctrine.event_subscriber ' , ['connection ' => $ listenerConfig ['connection ' ]])
40+ ->addTag ($ this -> getEventSubscriber ( $ doctrineDriver ) , ['connection ' => $ listenerConfig ['connection ' ]])
4041 ;
4142 }
4243 }
44+
45+ $ serviceId = 'enqueue_elastica.doctrine.sync_index_with_object_change_processor ' ;
46+ $ managerRegistry = $ this ->getManagerRegistry ($ doctrineDriver );
47+ $ container
48+ ->getDefinition ($ serviceId )
49+ ->replaceArgument (0 , new Reference ($ managerRegistry ));
50+ }
51+
52+ /**
53+ * @param string $driver
54+ *
55+ * @return string
56+ */
57+ private function getManagerRegistry (string $ driver ): string
58+ {
59+ switch ($ driver ) {
60+ case 'mongodb ' :
61+ return 'doctrine_mongodb ' ;
62+ break ;
63+ case 'orm ' :
64+ default :
65+ return 'doctrine ' ;
66+ }
67+ }
68+
69+ /**
70+ * @param string $driver
71+ *
72+ * @return string
73+ */
74+ private function getEventSubscriber (string $ driver ): string
75+ {
76+ switch ($ driver ) {
77+ case 'mongodb ' :
78+ return 'doctrine_mongodb.odm.event_subscriber ' ;
79+ break ;
80+ case 'orm ' :
81+ default :
82+ return 'doctrine.event_subscriber ' ;
83+ }
4384 }
4485}
0 commit comments