Метод executeQuery класса Connection
Метод executeQuery класса Connection
выполняет SQL-запрос, который возвращает
набор строк, например SELECT.
Первым параметром передаётся текст SQL-запроса,
вторым - массив значений для подстановки
в подготовленный запрос, третьим - массив типов
этих значений. Метод возвращает объект Result,
из которого затем извлекаются данные методами
fetchAssociative, fetchAllAssociative
и другими.
Синтаксис
public function executeQuery(string $sql, array $params = [], array $types = []): Result
Пример
Давайте выполним простой запрос к таблице article:
<?php
namespace App\Repository;
use Doctrine\DBAL\Connection;
class ArticleRepository
{
public function __construct(private Connection $connection)
{
}
public function getAll(): array
{
$sql = 'SELECT * FROM article';
$res = $this->connection->executeQuery($sql);
return $res->fetchAllAssociative();
}
}
?>
Результат выполнения кода:
[
['id' => 1, 'title' => 'article 1', 'text' => 'abcde'],
['id' => 2, 'title' => 'article 2', 'text' => 'hello']
]
Пример
Давайте передадим параметры в подготовленный запрос:
<?php
namespace App\Repository;
use Doctrine\DBAL\Connection;
use Doctrine\DBAL\ParameterType;
class ArticleRepository
{
public function __construct(private Connection $connection)
{
}
public function getById(int $id): array
{
$sql = 'SELECT * FROM article WHERE id = ?';
$res = $this->connection->executeQuery($sql, [$id], [ParameterType::INTEGER]);
return $res->fetchAllAssociative();
}
}
?>
Результат выполнения кода для id = 1:
[
['id' => 1, 'title' => 'article 1', 'text' => 'abcde']
]
Пример
Давайте используем именованные параметры в запросе:
<?php
namespace App\Repository;
use Doctrine\DBAL\Connection;
class ArticleRepository
{
public function __construct(private Connection $connection)
{
}
public function findByTitle(string $title): array
{
$sql = 'SELECT * FROM article WHERE title = :title';
$res = $this->connection->executeQuery($sql, ['title' => $title]);
return $res->fetchAllAssociative();
}
}
?>
Результат выполнения кода для 'article 1':
[
['id' => 1, 'title' => 'article 1', 'text' => 'abcde']
]
Смотрите также
-
класс
Connection,
который управляет соединением с базой данных -
метод
executeStatement,
который выполняет запросы без выборки строк -
метод
fetchAllAssociative,
который извлекает все строки результата -
метод
fetchAssociative,
который извлекает одну строку результата