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

Метод findAll класса ServiceEntityRepository

Метод findAll класса ServiceEntityRepository возвращает массив всех сущностей, хранящихся в таблице, закреплённой за данным репозиторием. Метод не принимает обязательных параметров и возвращает плоский массив объектов. Если в таблице нет записей, метод вернёт пустой массив.

Синтаксис

public function findAll(): array

Пример

Давайте создадим репозиторий для сущности Article и получим все статьи через метод findAll:

<?php namespace App\Repository; use App\Entity\Article; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\Persistence\ManagerRegistry; /** * @extends ServiceEntityRepository<Article> */ class ArticleRepository extends ServiceEntityRepository { public function __construct(ManagerRegistry $registry) { parent::__construct($registry, Article::class); } } ?>

Теперь вызовем метод findAll в контроллере и выведем заголовки статей:

<?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('/articles', name: 'article_index')] public function index(ArticleRepository $articleRepository): Response { $articles = $articleRepository->findAll(); foreach ($articles as $article) { echo $article->getTitle() . '<br>'; } return new Response(); } } ?>

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

article 1<br> article 2<br> article 3<br>

Пример

Давайте посчитаем количество всех статей, используя findAll и функцию count:

<?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('/articles/count', name: 'article_count')] public function count(ArticleRepository $articleRepository): Response { $articles = $articleRepository->findAll(); $total = count($articles); return new Response('Total articles: ' . $total); } } ?>

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

Total articles: 3

Пример

Давайте отфильтруем статьи, полученные через findAll, по булевому полю published:

<?php namespace App\Controller; use App\Entity\Article; 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('/articles/published', name: 'article_published')] public function published(ArticleRepository $articleRepository): Response { $articles = $articleRepository->findAll(); $published = array_filter($articles, function (Article $article) { return $article->isPublished() === true; }); return new Response('Published: ' . count($published)); } } ?>

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

Published: 2

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

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