는 실제로 필요한 것 : QueryBuilder와 지난 달 돌려 기록을 Symfony2QueryBuilder를 사용하여 CURRENT_DATE()와 지난 달 사이의 일수 차이를 계산하는 방법은 무엇입니까?
에서 또는 다른 말로 : 내가 무슨 짓을 교리 QueryBuilder
created_at >= DATE_FORMAT(NOW(), '%Y-%m-%d') - INTERVAL 1 MONTH
에 다음과 MySQL의 쿼리를 변환 :
$clicks = $clickRepo->createQueryBuilder('c')
->select('c.product, c.createdAt, c.title')
->addSelect('COUNT(c.product)')
->where('c.type = :pro')
->setParameter('pro', 'product')
->andWhere('c.createdAt >= DATE_DIFF(CURRENT_DATE(), :end)')
->setParameter('end', new \DateTime('-30 days'), \Doctrine\DBAL\Types\Type::DATETIME)
->andWhere('c.shop != :null')
->setParameter('null', '0')
->andWhere('c.visible = :one')
->setParameter('one', '1')
->groupBy('c.product')
->setMaxResults(2)
->getQuery()->getResult();
esult는 :
array(1) {
[0]=>
array(4) {
["product"]=>
int(3)
["createdAt"]=>
object(DateTime)#3211 (3) {
["date"]=>
string(26) "2016-02-19 13:27:45.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(13) "Europe/Berlin"
}
["title"]=>
string(23) "Title BlaBla"
["clicks"]=>
string(1) "2"
}
}
이 테이블의 시작 부분 만 레코드를 반환합니다.
1. 나는 질문 제목을 편집했다. Doctrine은 CURRENT_DATE() 만 지원합니다. 2.이 경우에도이 오류가 발생합니다 : [Doctrine \ ORM \ Query \ QueryException] [구문 오류] 행 0, 열 168 : 오류 : 예상 Doctrine \ ORM \ Query \ Lexer :: T_CLOSE_PARENTHESIS, 1 ' –
3. 나는 당신에게도 당신의 모습에 문제가 있다고 경고해야합니다. c.createdAt> = (NOW(), INTERVAL 1 MONTH) –