serait possible d'avoir un référentiel personnalisé non associé à une entité dans Symfony 2 et Doctrine 2? J'aimerais y mettre cela un SQL natif qui ne convient pas à d'autres référentiels (il peut se référer à une hiérarchie abstraite ou entité). P>
Comment le code du contrôleur ceci-> getdoctrine () -> gettrepositoty (/ * ??? * /) code> doit être remplacé? P>
3 Réponses :
Ma suggestion est de créer une classe PHP uni avec les dépendances nécessaires dans le constructeur et de l'obtenir via le conteneur de service. P>
Il est possible d'avoir autant de référentiels que vous le souhaitez. Cependant, seul un seul référentiel peut être relié au gestionnaire d'entité.
Vous devez définir quelques services pour ajouter un référentiel personnalisé. P>
namespace Acme\FQCN; use \Doctrine\DBAL\Connection; class MiscRepository { protected $conn; public function __construct(Connection $conn) { $this->conn = $conn; } }
Désolé, je voulais dire que le référentiel ne devrait être associé à aucune entité. Alors, pourquoi la chose de métadonnée?
@Gremo Dans ce cas, il serait logique de simplement créer un service supplémentaire et injecter une connexion de base de données elle-même.
Après avoir injecté de la base de données_connection, je ne devrais faire qu'une classe qui hérite de l'entitérepository, n'est-ce pas?
@Gremo Nope, puisque vous n'utilisez pas réellement aucune des fonctionnalités ORM, le référentiel n'aurait pas à hériter de entityrepository code> du tout.
Bien. Merci pour votre aide, je vais accepter la réponse. La seule mauvaise chose de référentiel personnalisé (avec des dépendances) est la nécessité de définir et de passer les métadonnées. Créer un service pour chaque métadonnée d'entité pourrait être assez ennuyeux.
@Gremo vient penser à cela, vous n'auriez pas à définir les métadonnées. Au lieu de cela, créez l'objet medadata code> dans le constructeur de votre référentiel.
J'ai adopté une solution légèrement différente à l'aide de Symfony2 Services parents.
Tout d'abord, j'ai créé un service parent, un Nous voulons maintenant définir un nouveau référentiel: p> xxx pre> xxx pré> xxx pré> xxx pré> () code> Méthode crée et exécute la requête suivante: P> enfin dans notre contrôleur: P> > pour plus d'informations et Manager d'entité strong> / Connexion forte> Utilisation Veuillez vous reporter à la documentation officielle: http://doctrine-orm.readthedocs.org/fr/latest/reference/native-sql.html P> p> GenericRepository Code> Classe qui expose quelques méthodes et rend la vie plus facile dans le cas où nous " d J'aime refacturer notre code à l'avenir. p>
services.yml code> p>
acme \ Bundle \ Référentiel \ genericRepository code> p>
services.yml code> < / p>
acme \ bundle \ producteur \ producteur \ producteurbatcher code> p>
Supprimer de produit_batch dans laquelle ID =? code> p>