Метод fetchOne
Метод fetchOne класса Connection
выполняет SQL-запрос и возвращает значение
первого столбца первой строки результата.
Если запрос не вернул ни одной строки,
метод возвращает false.
Первым параметром передаётся SQL-запрос,
вторым - массив значений для подстановки
в подготовленный запрос.
Синтаксис
public function fetchOne(string $query, array $params = []): mixed
Пример
Давайте получим имя пользователя по его id:
<?php
namespace App\Controller;
use Doctrine\DBAL\Connection;
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(Connection $connection): Response
{
$res = $connection->fetchOne(
'SELECT name FROM users WHERE id = ?',
[1]
);
return new Response(var_export($res, true));
}
}
?>
Результат выполнения кода:
'user'
Пример
Давайте посчитаем количество статей в таблице:
<?php
namespace App\Controller;
use Doctrine\DBAL\Connection;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article/count', name: 'article_count')]
public function count(Connection $connection): Response
{
$res = $connection->fetchOne('SELECT COUNT(*) FROM articles');
return new Response(var_export($res, true));
}
}
?>
Результат выполнения кода:
5
Пример
Давайте проверим, существует ли пользователь с заданным email:
<?php
namespace App\Controller;
use Doctrine\DBAL\Connection;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article/check', name: 'article_check')]
public function check(Connection $connection): Response
{
$res = $connection->fetchOne(
'SELECT id FROM users WHERE email = ?',
['user@example.com']
);
if ($res === false) {
return new Response('user not found');
}
return new Response('user id: ' . $res);
}
}
?>
Результат выполнения кода для существующего пользователя:
"user id: 5"
Смотрите также
-
класс
Connection,
который представляет соединение с базой данных -
метод
fetchAssociative,
который возвращает первую строку в виде массива -
метод
fetchAllAssociative,
который возвращает все строки в виде массива -
метод
executeQuery,
который выполняет SQL-запрос и возвращает результат