symfony 3.4 Учение COUNT - PullRequest
       1

symfony 3.4 Учение COUNT

0 голосов
/ 13 мая 2019

этот код хорошо работает, чтобы подсчитать, сколько "2014-01-01 00:00:00" есть в моей колонке "сессия", но я хочу, чтобы день был чем-то не только 01.

    class BooknowRepository extends \Doctrine\ORM\EntityRepository
{
    public function findAllOrderedByNb() {

        return $this->createQueryBuilder('a')

                        ->select('COUNT(a)')

                        ->where('a.session = :session')

                        ->setParameter('session', '2014-01-01 00:00:00')

                        ->getQuery()

                        ->getSingleScalarResult();

    }
}

Ответы [ 2 ]

1 голос
/ 13 мая 2019
class BooknowRepository extends \Doctrine\ORM\EntityRepository
{
    public function findAllOrderedByNb() {

        return $this->createQueryBuilder('a')
            ->select('COUNT(a)')
            ->where('a.session LIKE :session')
            ->setParameter('session', '%2014-01%')
            ->getQuery()
            ->getSingleScalarResult()
        ;
    }
}
0 голосов
/ 13 мая 2019

Несколько дат

но я хочу, чтобы этот день был чем-то не только 01

Если я вас правильно понял, вы хотите найтиколичество дат из массива.В SQL это реализовано с использованием синтаксиса WHERE IN - в Doctrine настоятельно рекомендуется использовать метод $ qb-> expr () -> in () .

$sessions = ['2014-01-01 00:00:00', '2014-01-03 00:00:00'];    
...  

$qb = $this->createQueryBuilder('a');
...    
$qb->select('COUNT(a)')
   ->where($qb->expr()->in('a.session', ':sessions'))
   ->setParameter('sessions', sessions)

Dotrine doc: https://www.doctrine -project.org / projects / doctrine-orm / en / 2.6 / reference / query-builder.html # высокоуровневые api-методы

Диапазон дат

Если вы хотите получить количество строк в месяце / году, вам нужно установить интервал до начала следующего месяца

->andWhere('a.session >= :startSession')
->andWhere('a.session < :finishSession')
->setParameter('startSession', '2014-01-01 00:00:00')
->setParameter('finishSession', '2014-02-01 00:00:00')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...