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?
Wenn der Konfigurationsname Ihres Entitätsmanagers non_default
lautet, können Sie ihn als @doctrine.orm.non_default_entity_manager
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)
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.
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%Tags und Links symfony doctrine2 symfony-2.1