РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
15 of 258 menu

Метод getConnection

Метод getConnection класса EntityManager возвращает объект соединения с базой данных (Doctrine\DBAL\Connection). Через него можно выполнять SQL-запросы напрямую, минуя ORM, управлять транзакциями и получать параметры подключения. Метод не принимает параметров и всегда возвращает готовый объект соединения.

Синтаксис

$connection = $entityManager->getConnection();

Пример

Давайте получим соединение и выполним простой SQL-запрос через метод executeQuery:

<?php namespace App\Controller; use Doctrine\ORM\EntityManagerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/article', name: 'article_index')] public function index(EntityManagerInterface $em): Response { $connection = $em->getConnection(); $res = $connection->executeQuery('SELECT 1 + 1 AS result')->fetchOne(); return new Response((string) $res); } } ?>

Результат выполнения кода:

2

Пример

Давайте вытащим список статей напрямую через SQL-запрос и вернём их в виде массива:

<?php namespace App\Controller; use Doctrine\ORM\EntityManagerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/articles', name: 'article_list')] public function list(EntityManagerInterface $em): JsonResponse { $connection = $em->getConnection(); $res = $connection->executeQuery( 'SELECT id, title FROM article ORDER BY id' )->fetchAllAssociative(); return $this->json($res); } } ?>

Результат выполнения кода:

[ ["id" => 1, "title" => "article 1"], ["id" => 2, "title" => "article 2"], ["id" => 3, "title" => "article 3"] ]

Пример

Давайте вставим новую запись через метод executeStatement:

<?php namespace App\Controller; use Doctrine\ORM\EntityManagerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/article/create', name: 'article_create')] public function create(EntityManagerInterface $em): Response { $connection = $em->getConnection(); $res = $connection->executeStatement( 'INSERT INTO article (title, content) VALUES (?, ?)', ['article', 'text'] ); return new Response((string) $res); } } ?>

Результат выполнения кода (количество затронутых строк):

1

Смотрите также

  • класс EntityManager,
    который управляет сущностями Doctrine
  • метод persist,
    который ставит сущность в очередь на сохранение
  • метод flush,
    который сбрасывает изменения в базу данных
  • метод beginTransaction,
    который начинает транзакцию
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить