У меня есть комплект Symfony4.Мне нужно работать с PostgresSQL с ORM Doctrine.Я хочу вызвать некоторый класс (Service) для работы с ORM, но у меня есть проблема.
Попытался создать сервис в services.yaml и создать класс.Я уже пробовал использовать ContainerBuilder, но у этой проблемы "Служба" Событие "есть зависимость от несуществующей службы" doctrine.orm.entity_manager ". Что я делаю неправильно. В классе, расширяющем Controller, я получаю EntityManger без проблем. Какчтобы получить EntityManager за пределами контроллера.
services.yaml
services:
# default configuration for services in *this* file
_defaults:
autowire: true # Automatically injects dependencies in your services.
autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.
# makes classes in src/ available to be used as services
# this creates a service per class whose id is the fully-qualified class name
App\:
resource: '../src/*'
exclude: '../src/{DependencyInjection,Entity,Migrations,Tests,Kernel.php}'
# controllers are imported separately to make sure services can be injected
# as action arguments even if you don't extend any base controller class
App\Controller\:
resource: '../src/Controller'
tags: ['controller.service_arguments']
Event:
class: App\Core\Event
public: true
arguments: ['@doctrine.orm.entity_manager']
App \ Core \ Event.php
<?php
namespace App\Core;
use Doctrine\ORM\EntityManagerInterface;
class Event
{
public $entityManager;
public function __construct(EntityManagerInterface $em) {
$this->entityManager = $em;
}
}
Любой класс, в котором я хочу получить службу
$container = new ContainerBuilder();
$fileLocator = new FileLocator('/home/admin/web/noticer_service/public_html/config');
$loader = new YamlFileLoader($container, $fileLocator);
$loader->load('services.yaml');
$container->compile();
$container->get('Event')