SQL для построения запросов - Symfony - PullRequest
0 голосов
/ 20 ноября 2018

Я написал запрос, который должен занять последние 7 дней и рассчитать сумму расходов за каждый день.

 SELECT
 DATE(transaction_date) AS TransactionDate, 
 SUM(amount) AS Amount
 FROM transaction
 WHERE type = 'spend'
 AND transaction_date>=  DATE_ADD(NOW(), INTERVAL -7 DAY)
 GROUP BY TransactionDate

Когда я запускаю свой sql-запрос, он работает нормально, но я могу ошибаться в своей функции, которую я написал в Symfony.Он возвращает ноль, и это не так с запросом выше.

 public function getWeeklyTrans()
{
    $date = date('Y-m-d h:i:s', strtotime("-7 days"));

    $result = $this->getAmountRepository()
        ->createQueryBuilder('p')
        ->select('sum(abs(p.amount))')
        ->where('p.transactionDate BETWEEN :today AND :n7days')
        ->setParameter('today', date('Y-m-d h:i:s'))
        ->setParameter('n7days', $date)
        ->getQuery()
        ->getArrayResult();

    return $result;

}

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

Большое спасибо.Я нашел решение.

 public function getTrans()
{
    $type = Transaction::TYPE_SPEND;

    $result = $this->getAmountRepository()
        ->createQueryBuilder('p')
        ->select('sum(p.amount)')
        ->where('p.transactionDate >= :end')
        ->andWhere('p.type >= :type')
        ->setParameter('end', new \DateTime('-7 days'))
        ->setParameter('type', $type)
        ->groupBy('p.transactionDate')
        ->getQuery()
        ->getResult();

    return $result;
}
0 голосов
/ 20 ноября 2018

Разве вы не можете получить SQL от Query Builder и скопировать его в ваш рабочий Query?Что-то вроде $qb->getQuery()->getSQL()?

Кажется, что не хватает нескольких условий

  • type = 'spend'

  • transaction_date>= DATE_ADD(NOW(), INTERVAL -7 DAY) не совсем точнотакое же условие

  • GROUP BY TransactionDate также отсутствует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...