Метод find
Метод find класса ServiceEntityRepository
возвращает одну сущность по её идентификатору.
Первым параметром передаётся значение первичного ключа.
Вторым необязательным параметром можно передать блокировку
и уровень изоляции. Если запись не найдена, метод
возвращает null.
Синтаксис
public function find(mixed $id, LockMode|int|null $lockMode = null, int|null $lockVersion = null): ?object
Пример
Давайте найдём сущность Article с идентификатором 1:
<?php
namespace App\Controller;
use App\Repository\ArticleRepository;
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_show')]
public function show(ArticleRepository $repo): Response
{
$article = $repo->find(1);
return new Response($article->getTitle());
}
}
?>
Результат выполнения кода:
"article"
Пример
Давайте обработаем ситуацию, когда запись не найдена:
<?php
namespace App\Controller;
use App\Repository\ArticleRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article/{id}', name: 'article_show')]
public function show(int $id, ArticleRepository $repo): Response
{
$article = $repo->find($id);
if (null === $article) {
return new Response('article not found');
}
return new Response($article->getTitle());
}
}
?>
Результат выполнения кода для адреса /article/999:
"article not found"
Смотрите также
-
класс
ServiceEntityRepository,
который является базовым классом репозитория -
метод
findAll,
который возвращает все сущности репозитория -
метод
findBy,
который ищет сущности по заданным критериям -
метод
findOneBy,
который находит одну сущность по критериям