Задать вопрос
@abubekovdd

Как делать createQueryBuilder в коде?

Доброго дня!
Ни где в доках не могу найти информацию как правильно строить приложение на symfony4
К примеру хочу я сделать запрос к таблице(которая не имеет сущности) при помощи createQueryBuilder в каком-либо произвольно классе который создал в папке src.
Каким образом получить объект getDoctrine()->getManager(), что бы использовать createQueryBuilder?
  • Вопрос задан
  • 286 просмотров
Подписаться 2 Средний Комментировать
Решения вопроса 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
Это не надо делать в "произвольном" классе. Это надо делать в сервисе. В который все необходимые компоненты передаются через dependency injection.
При конфигурировании сервиса в services.yml все необходимые ему компоненты прописываются в аргументы конструктора

foo.service:
        class: AppBundle\Helper\Foo
        arguments:
            $entityManager: "@doctrine.orm.entity_manager"


и потом в самом классе в конструкторе переданный аргумент присваивается переменной класса
use Doctrine\ORM\EntityManager;

class Foo
{   
    /**
     * @Var EntityManager
     */
    protected $em;

    public function __construct(EntityManager $em)
    {
      $this->em = $em;
    }


Смысл в том, что в Симфони не должно быть "произвольных классов". Все классы должны укладываться в четкую стркутуру. Репозитории - для работы с БД. Контроллеры обрабатывают НТТР запросы. "произвольный код" пишется в сервисы. То есть это должен быть не просто класс, сам по себе, а сервис, описанный в конфигурации.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы