@@ -23,6 +23,7 @@ public function load(array $configs, ContainerBuilder $container)
23
23
24
24
$ container ->setAlias ('enqueue_elastica.context ' , $ config ['context ' ]);
25
25
26
+ $ doctrineDriver = $ config ['doctrine ' ]['driver ' ];
26
27
if (false == empty ($ config ['doctrine ' ]['queue_listeners ' ])) {
27
28
foreach ($ config ['doctrine ' ]['queue_listeners ' ] as $ listenerConfig ) {
28
29
$ listenerId = sprintf (
@@ -36,9 +37,49 @@ public function load(array $configs, ContainerBuilder $container)
36
37
->addArgument (new Reference ('enqueue_elastica.context ' ))
37
38
->addArgument ($ listenerConfig ['model_class ' ])
38
39
->addArgument ($ listenerConfig )
39
- ->addTag (' doctrine.event_subscriber ' , ['connection ' => $ listenerConfig ['connection ' ]])
40
+ ->addTag ($ this -> getEventSubscriber ( $ doctrineDriver ) , ['connection ' => $ listenerConfig ['connection ' ]])
40
41
;
41
42
}
42
43
}
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
+ }
43
84
}
44
85
}
0 commit comments