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

Метод findOneBy

Метод findOneBy класса ServiceEntityRepository возвращает первую запись, соответствующую переданным условиям. Первым параметром передаётся массив условий вида ['field' => value]. Вторым необязательным параметром можно задать сортировку результата. Если запись не найдена, метод вернёт null.

Синтаксис

public function findOneBy(array $criteria, ?array $orderBy = null): ?object

Пример

Давайте найдём статью по её id:

<?php namespace AppRepository; use AppEntityArticle; use DoctrineBundleDoctrineBundleRepositoryServiceEntityRepository; use DoctrinePersistenceManagerRegistry; class ArticleRepository extends ServiceEntityRepository { public function __construct(ManagerRegistry $registry) { parent::__construct($registry, Article::class); } } ?>

Теперь вызовем метод findOneBy в контроллере:

<?php namespace AppController; use AppRepositoryArticleRepository; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article', name: 'article_show')] public function show(ArticleRepository $repo): Response { $res = $repo->findOneBy(['id' => 1]); return new Response($res->getTitle()); } } ?>

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

"article"

Пример

Давайте найдём пользователя по имени и отсортируем результат по id:

<?php namespace AppController; use AppRepositoryUserRepository; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class UserController extends AbstractController { #[Route('/user', name: 'user_show')] public function show(UserRepository $repo): Response { $res = $repo->findOneBy( ['name' => 'abcde'], ['id' => 'DESC'] ); if ($res === null) { return new Response('user not found'); } return new Response($res->getName()); } } ?>

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

"abcde"

Пример

Давайте обработаем ситуацию, когда запись не найдена:

<?php namespace AppController; use AppRepositoryArticleRepository; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article/check', name: 'article_check')] public function check(ArticleRepository $repo): Response { $res = $repo->findOneBy(['title' => 'hello']); if ($res === null) { return new Response('not found'); } return new Response($res->getTitle()); } } ?>

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

"not found"

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

  • класс ServiceEntityRepository,
    который является базовым классом репозитория
  • метод find,
    который ищет запись по её идентификатору
  • метод findBy,
    который ищет все записи по условиям
  • метод findAll,
    который возвращает все записи репозитория
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить