Dunction2에서 SQL의 YEAR(), MONTH() 및 DAY()를 어떻게 사용할 수 있습니까?
네이티브 SQL에서 다음과 같은 쿼리를 수행하려고 합니다.
SELECT
AVG(t.column) AS average_value
FROM
table t
WHERE
YEAR(t.timestamp) = 2013 AND
MONTH(t.timestamp) = 09 AND
DAY(t.timestamp) = 16 AND
t.somethingelse LIKE 'somethingelse'
GROUP BY
t.somethingelse;
만약 내가 이것을 Dutrin의 쿼리 작성기에서 다음과 같이 구현하려고 한다면:
$qb = $this->getDoctrine()->createQueryBuilder();
$qb->select('e.column AS average_value')
->from('MyBundle:MyEntity', 'e')
->where('YEAR(e.timestamp) = 2013')
->andWhere('MONTH(e.timestamp) = 09')
->andWhere('DAY(e.timestamp) = 16')
->andWhere('u.somethingelse LIKE somethingelse')
->groupBy('somethingelse');
오류 예외가 발생합니다.
[문자 오류] 라인 0, col 63: 오류: 알려진 함수 예상, 'YEAR' 발생
교리 쿼리 작성기로 쿼리를 구현하려면 어떻게 해야 합니까?
주의:
- 나는 독트린의 네이티브 SQL에 대해 알고 있습니다.저는 이것을 시도해 보았지만, 생산적인 데이터베이스 테이블과 개발 데이터베이스 테이블의 이름이 다르다는 문제가 발생했습니다.데이터베이스에 구애받지 않는 작업을 수행하고 싶으므로 이 옵션은 사용할 수 없습니다.
- 저는 데이터베이스 진단 작업을 하고 싶지만, 참고로 저는 MySQL을 사용하고 있습니다.
- 독트린을 확장하여 "학습"할 수 있는 방법이 있습니다.
YEAR()
예를 들어, 여기서 보는 것과 같은 진술.하지만 타사 플러그인을 포함하지 않을 방법을 찾고 있습니다.
MySql을 사용할 수 있도록 독트린 확장을 추가할 수 있습니다.YEAR
그리고.MONTH
Symfony를 사용하는 경우 이 구성을 추가하여 설명합니다.
doctrine:
orm:
dql:
string_functions:
MONTH: DoctrineExtensions\Query\Mysql\Month
YEAR: DoctrineExtensions\Query\Mysql\Year
이제 DQL 또는 쿼리 작성기에서 MONG 및 YEAR 문을 사용할 수 있습니다.
참고: 이 확장은 MySQL, Oracle, Postgre를 지원합니다.SQL 및 SQLite.
Symfony 4에서는 Dutrin을 설치해야 합니다.확장:
composer require beberlei/DoctrineExtensions
그런 다음 다음 다음과 같이 독트린 구성 파일(config/packages/docctrine.yaml)을 편집합니다.
doctrine:
orm:
dql:
string_functions:
MONTH: DoctrineExtensions\Query\Mysql\Month
YEAR: DoctrineExtensions\Query\Mysql\Year
orocrm/messages-extension도 좋은 프로젝트인 것 같습니다.
MySQL과 PostgreSql을 모두 지원합니다. 목표는 교차 DB입니다.
Symphony 4의 경우:
- 설치: 작곡가에게 beberlei/docrine 확장이 필요합니다.
- 편집: config\packages\docrine.얌
doctrine:
orm:
dql:
datetime_functions:
DAY: DoctrineExtensions\Query\Mysql\Day
MONTH: DoctrineExtensions\Query\Mysql\Month
YEAR: DoctrineExtensions\Query\Mysql\Year
- 컨트롤러 편집:
public function somex()
{
$em = $this->getDoctrine()->getManager();
$emConfig = $em->getConfiguration();
$emConfig->addCustomDatetimeFunction('YEAR', 'DoctrineExtensions\Query\Mysql\Year');
$emConfig->addCustomDatetimeFunction('MONTH', 'DoctrineExtensions\Query\Mysql\Month');
$emConfig->addCustomDatetimeFunction('DAY', 'DoctrineExtensions\Query\Mysql\Day');
$day = '22';
$month = '4';
$qb = $em->createQueryBuilder()
->select('u')
->from('App\Entity\User', 'u')
->where('DAY(u.somedate) = :day')
->andwhere('MONTH(u.somedate) = :month')
->setParameter('month', $day)
->setParameter('day', $month)
;
$trab = $qb->getQuery()->getResult();
return $this->render('intranet/somex.html.twig', [
'trab' => $trab
]);
}
````
이 페이지로 이동하여 데이터베이스 시스템을 선택하고 원하는 기능을 선택합니다.
저도 당신과 같은 문제를 겪었습니다.그런 다음 github 파일과 정확하게 동일한 이름을 사용하여 내 dinction.yaml 파일을 수정했고 작동했습니다.
언급URL : https://stackoverflow.com/questions/18826836/how-can-i-use-sqls-year-month-and-day-in-doctrine2
'programing' 카테고리의 다른 글
오라클에서 날짜를 다른 형식으로 표시하는 방법 (0) | 2023.07.25 |
---|---|
Android에서 ListView에 요소를 동적으로 추가하려면 어떻게 해야 합니까? (0) | 2023.07.25 |
Pandas 데이터 프레임의 문자열에 선행 0 추가 (0) | 2023.07.25 |
패키지에 'type: module'이(가) 있는 이유입니다.json 파일? (0) | 2023.07.25 |
오류: 'brew link' 단계가 성공적으로 완료되지 않았습니다. (0) | 2023.07.25 |