Wie injiziere ich Nicht-Standard-Entity-Manager?

8

In Symfony2 können Sie mit mehreren Entitätsmanagern arbeiten und so etwas wie den folgenden Code verwenden:

%Vor%

Wir können den Standard-Manager jedem Dienst hinzufügen, indem Sie Folgendes verwenden:

%Vor%

Wie können Sie Nicht-Standard-Entity-Manager in Services einfügen?

    
d0001 29.10.2012, 08:44
quelle

4 Antworten

23

Wenn der Konfigurationsname Ihres Entitätsmanagers non_default lautet, können Sie ihn als @doctrine.orm.non_default_entity_manager

referenzieren     
Mun Mun Das 29.10.2012, 12:47
quelle
4

Sie sollten Ihren benutzerdefinierten Entitätsmanager als Service definieren:

%Vor%

Dann können Sie es auf die gleiche Weise injizieren wie bei jedem Service:

%Vor%

Bearbeiten :

Achten Sie darauf, dass die Factory-Methode in der Symfony-Version abweichen kann (es könnte getEntityManager oder getManager sein)

    
Cyprian 29.10.2012 09:35
quelle
2

Für diejenigen, die Symfony 3+ verwenden, verwenden Sie die Konsole: php bin/console debug:container

Dann sollten Sie viele Zeilen sehen, beginnend mit: 'doctrine.orm.MY_CUSTOM_ENTITY_MANAGER_xxxxxxxxxx'

Wenn Sie also den Ihrem benutzerdefinierten Entitätsmanager entsprechenden Entitätsmanager suchen möchten, suchen Sie folgende Zeile: 'doctrine.orm.MY_CUSTOM_ENTITY_MANAGER_entity_manager'

Sie können es in Ihre Serviceargumente einfügen.

Ich hoffe, es hilft.

    
Julien Ferment 21.03.2017 13:37
quelle
1

Hallo, erstelle zuerst deinen Manager, in meinem Beispiel erstelle ich den Manager für meine Item-Klasse, die sich in einem CoreBundle befindet:

%Vor%

Wenn die Manager-Struktur zwischen mehreren Managern geteilt wird, können Sie einen BaseManager erstellen, der von allen anderen Managern erweitert wird!

Dann registrieren Sie es in der Datei services.yml (oder xml) Ihres Bundles:

%Vor%

Das ist es, du kannst es jetzt benutzen:

%Vor%

Sie können dann Ihren Manager verbessern, hier gebe ich meinem Manager eine Reihe von Konfigurationsparametern:

%Vor%

Wenn Sie einen BaseManager erstellen, können Sie auch eine nützliche generische Methode zum Initialisieren eines Objekts erstellen:

%Vor%     
Sybio 29.10.2012 09:04
quelle

Tags und Links