본문 바로가기
MySql

MySQL Doctrine 2 DQL CONCAT 필드 및 상수 문자열

by 베이스 공부 2020. 11. 14.
반응형

MySQL 테이블에 firstname lastname 필드가 있습니다. 편의를 위해 full_name 이라는 Doctrine 2 엔티티에 계산 된 열을 추가하려고합니다. 평범한 오래된 MySQL에서는 다음과 같이 할 것입니다.

SELECT CONCAT(firstname, " ", lastname) AS full_name FROM customers;

그러나 필드와 상수 문자열 (이 경우 "")을 연결하는 것은 Doctrine의 CONCAT 구현에서 작동하지 않는 것 같습니다. 다음 코드를 사용하는 경우

$repository
    ->createQueryBuilder('customer')
    ->select('CONCAT(customer.firstname, " ", customer.lastname) AS full_name')
    // ...

오류가 발생합니다

[Syntax Error] line 0, col 91: Error: Expected StateFieldPathExpression | string | InputParameter | FunctionsReturningStrings | AggregateExpression, got '"'

MySQL에서와 동일한 동작을 어떻게 수행 할 수 있습니까?

 

해결 방법

 

분명히 DQL의 문자열은 큰 따옴표가 아닌 작은 따옴표로만 캡슐화 할 수 있습니다. 문서에서 간단한 검색으로이 동작을 직접 언급하지는 않았지만 상수 문자열을 포함하는 모든 예제에서 작은 따옴표를 사용했음을 알았습니다.

바꾸다

->select('CONCAT(customer.firstname, " ", customer.lastname) AS full_name')

->select('CONCAT(customer.firstname, \' \', customer.lastname) AS full_name')

또는

->select("CONCAT(customer.firstname, ' ', customer.lastname) AS full_name")

문제를 해결

 

참조 페이지 https://stackoverflow.com/questions/34755519

 

 

반응형

댓글