fbpx

Symfony: Autowire dei repository Doctrine (Repositories as Service)

Con la versione 3.3, Symfony ha introdotto l’autowrire e l’autoconfigure dei servizi, risparmiando a noi developer parecchio lavoro “noioso”.

Spesso capita di dovere iniettare un repository Doctrine: out of the box non è possibile farlo. Di default infatti i repository non sono dichiarati come servizi e non sono quindi utilizzabili con l’autowire.

Per risolvere il problema bastano due semplici modifiche:

  • Il repository deve estendere la classe “Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository”
  • Nel costruttore del repository bisogna richiamare il parent passandogli l’entity di riferimento: parent::__construct($registry, Foo::class);

Ad esempio, il repository FooRepository dell’entity Foo andrebbe quindi dichiarato così:

Con questa modifica possiamo quindi iniettare il repository all’interno di un servizio o di un controller:

Matteo Moretti
Matteo Moretti
Articoli: 30

Lascia una risposta

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.