Nachdem ein benutzerdefiniertes repository nicht verbunden, um eine Einheit in Symfony 2 / Lehre 2?
Wäre möglich, ein benutzerdefiniertes repository, die nicht in Zusammenhang mit einer Entität in Symfony 2 und Doctrine 2? Ich würde gerne in der es einige native-SQL-das passt nicht gut in andere repositories (es kann beziehen sich auf abstrakte oder entity-Hierarchie).
Wie controller-code $this->getDoctrine()->getRepositoty(/* ??? */)
ersetzt werden sollte?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist es möglich, so viele repositories wie Sie es wünschen. Jedoch nur ein einziges repository verknüpft werden können mit dem entity manager.
Müssen Sie definieren, ein paar Dienste, um ein benutzerdefiniertes repository hinzufügen.
Die repository-Klasse müssten die Erben von
EntityRepository
.Leider werden Sie nicht in der Lage, um es abzurufen über die Lehre service. Stattdessen rufen Sie es direkt aus dem container:
BEARBEITEN
Erstellen Sie ein repository, das sollte nicht sein verbunden mit allen Entitäten, erstellen Sie einfach eine service-und injizieren Sie die erforderlichen Abhängigkeiten.
Da Sie nicht mit jedem der Lehre der ORM-Funktionen in einem benutzerdefinierten repository, es gibt keine Notwendigkeit, Sie zu verlängern
EntityManager
.EntityRepository
überhaupt.MedaData
Objekt im repository-Konstruktor.Nahm ich eine etwas andere Lösung mit Symfony2 übergeordneten Dienste.
Zunächst erstellte ich ein Eltern-service, ein
GenericRepository
Klasse stellt eine Reihe von Methoden und macht das Leben leichter Fall möchten wir überarbeiten unseren code in die Zukunft.services.yml
Acme\Bundle\CoreBundle\Repository\GenericRepository
Wollen wir jetzt definieren Sie ein neues repository:
services.yml
Acme\Bundle\ProductBundle\Repository\ProductBatchRepository
Den
deleteBatch()
Methode erstellt und die folgende Abfrage ausgeführt:DELETE FROM product_batch WHERE id = ?
Schließlich in unsere controller:
Weitere Informationen und entity manager /Verbindung Nutzung entnehmen Sie bitte der offiziellen Dokumentation: http://doctrine-orm.readthedocs.org/en/latest/reference/native-sql.html
Mein Vorschlag ist, erstellen Sie eine einfache PHP-Klasse mit den benötigten Abhängigkeiten im Konstruktor und bekommen es durch die service-container.