Для Symfony 3.x
Самым простым решением для меня было просто включить автопроводку / автоконфигурирование, а затем внедрить нужную мне услугу через конструктор.Обратите внимание, что я также разрешил вводить любой контроллер в качестве службы, установив resource: '../../src/AppBundle/*'
#services.yml or config.yml
services:
_defaults:
autowire: true
autoconfigure: true
public: false
# Allow any controller to be used as a service
AppBundle\:
resource: '../../src/AppBundle/*'
# you can exclude directories or files
# but if a service is unused, it's removed anyway
exclude: '../../src/AppBundle/{Entity,Repository,Tests,DataFixtures,Form}'
Затем в любой службе можно внедрить и использовать менеджер сущностей $em
(или любой другой сервис / контроллер ) через конструктор, подобный этому:
// class xyz
private $em;
// constructor
public function __construct(\Doctrine\ORM\EntityManager $em) {
$this->em = $em;
}
public function bar() {
//Do the Database stuff
$query = $this->em->createQueryBuilder();
//Your Query goes here
$result = $query->getResult();
}