Как написать count (*) SQL в DQL, Doctrine ORM

Как получить количество строк в базе данных по идентификатору? SELECT count(*) FROM members; Без проблем с производительностью. Как можно написать этот запрос с помощью entityManager? Я использую php version 5.6 и symfony 3

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
0
972
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы должны использовать свой EntityRepository Добавьте в него функцию и напишите примерно так:

$queryBuilder = $this->_em->createQueryBuilder()
        ->select('COUNT(e)')
        ->from('AppBundle:Entity', 'e');

    return $queryBuilder->getQuery()->getSingleScalarResult();

Обновлено: только что увидел ответ Грегуара. Это будет работать. Однако, если у вас уже есть сущность, которая имеет отношение, и она инициализирована, приведенная ниже информация позволит вам получить эту информацию без дополнительного запроса к БД.


Вы можете использовать ассоциацию и получить ее из Коллекции (см. Работа с ассоциациями в документации

class SomeEntity
{
    /**
     * @var Collection|Member[]
     */
    protected $members;

    // other properties

    // PHP >= 7 -> public function countMembers(): int
    public function countMembers()
    {
        return $this->getMembers()->count();
    }

    // PHP >= 7 -> public function getMembers(): Collection
    public function getMembers()
    {
        return $this->members;
    }

    // other getters/setters
}

Я использую php 5.6.

pvaitonis 22.03.2018 15:51

Убраны строгие типы для PHP <7

rkeet 22.03.2018 15:52

Добавлено объявление функции строгих типов для геттеров (> = PHP 7) в качестве комментариев для иллюстрации (кому-то они могут понадобиться)

rkeet 22.03.2018 15:55

Другие вопросы по теме