Avoir un personnalisé référentiel qui n'est pas associée à une entité dans Symfony 2 / Doctrine 2?
Serait possible d'avoir un custom référentiel qui n'est pas associée à une entité dans Symfony 2 et Doctrine 2? Je voudrais mettre quelques natif SQL qui ne rentre pas bien dans d'autres référentiels (on peut se référer au résumé ou d'une entité de la hiérarchie).
Comment contrôleur de code $this->getDoctrine()->getRepositoty(/* ??? */)
doit être remplacé?
Vous devez vous connecter pour publier un commentaire.
Il est possible d'avoir autant de dépôts que vous le souhaitez. Cependant, un seul référentiel peut être liée à l'entité gestionnaire.
Vous devez définir quelques-uns des services pour ajouter un dépôt personnalisée.
Le référentiel de la classe devrait hériter de
EntityRepository
.Malheureusement, vous ne serez pas en mesure de le récupérer via la doctrine de service. Au lieu de cela, le récupérer directement à partir du conteneur:
MODIFIER
Si vous êtes à la création d'un référentiel qui ne devrait pas être lié à toutes les entités, il suffit de créer un service et d'injecter les dépendances nécessaires.
Puisque vous ne l'utilisez pas tout de la Doctrine ORM caractéristiques personnalisé dans un référentiel, il n'y a pas besoin de s'étendre
EntityManager
.EntityRepository
à tous.MedaData
objet à l'intérieur de votre référentiel du constructeur.J'ai adopté un peu différente de la solution en utilisant Symfony2 parent services.
Tout d'abord, j'ai créé un service des parents, un
GenericRepository
classe qui expose un couple de méthodes et rend la vie plus facile dans le cas où nous aimerions de revoir notre code dans le futur.services.yml
Acme\Bundle\CoreBundle\Repository\GenericRepository
Maintenant, nous voulons définir un nouveau référentiel:
services.yml
Acme\Bundle\ProductBundle\Repository\ProductBatchRepository
La
deleteBatch()
méthode crée et exécute la requête suivante:DELETE FROM product_batch WHERE id = ?
Enfin dans notre contrôleur:
Pour de plus amples informations et entité gestionnaire de /connexion d'utilisation, veuillez vous référer à la documentation officielle: http://doctrine-orm.readthedocs.org/en/latest/reference/native-sql.html
Ma suggestion est de créer une plaine de la classe PHP avec les dépendances nécessaires dans le constructeur et le faire à travers le conteneur de services.