제목이 가까운 스레드가있을 수 있지만이 문제를 해결할 수 없었습니다. 다음 쿼리는 psql 명령 줄 또는 PostgreSQL 클라이언트 응용 프로그램에서 호출 할 때 예상 결과를 반환하지만 Doctrine 2를 사용하여 쿼리를 구현할 때 다음 오류/예외가 발생합니다.Doctrine cant는 json 쿼리에서 결과를 반환합니다.
raw_data 필드는 JSON 유형입니다.
검색어 :
SELECT
DISTINCT (((p.raw_data ->> 'company') :: JSONB) ->> 'userId') :: INTEGER
FROM schema.projects p
WHERE p.raw_data :: JSONB ? 'company'
AND (p.raw_data ->> 'company') :: JSONB ? 'userId'
AND (((p.raw_data ->> 'company') :: JSONB) ->> 'userId') :: INTEGER > 0
AND p.is_deleted = FALSE
LIMIT 20;
-- Returns 20 results
교리 구현 :
public function fetchResulst()
{
$sql = "
SELECT
DISTINCT (((p.raw_data ->> 'company') :: JSONB) ->> 'userId') :: INTEGER
FROM schema.projects p
WHERE p.raw_data :: JSONB ? 'company'
AND (p.raw_data ->> 'company') :: JSONB ? 'userId'
AND (((p.raw_data ->> 'company') :: JSONB) ->> 'userId') :: INTEGER > 0
AND p.is_deleted = FALSE
LIMIT 20
)";
return $this->_em->getConnection()->executeQuery($sql)->fetchAll();
}
응답 (예외)
Doctrine \ DBAL \ Exception \ SyntaxErrorException
An exception occurred while executing ' SELECT DISTINCT (((p.raw_data ->> 'company') :: JSONB) ->> 'userId') :: INTEGER FROM listing.projects p WHERE p.raw_data :: JSONB ? 'company' AND (p.raw_data ->> 'company') :: JSONB ? 'userId' AND (((p.raw_data ->> 'company') :: JSONB) ->> 'userId') :: INTEGER > 0 AND p.is_deleted = FALSE LIMIT 20) ': SQLSTATE[42601]: Syntax error: 7 ERROR: syntax error at or near "$1" LINE 5: WHERE p.raw_data :: JSONB $1 'company'^
raw_data 페이로드에 '기업'필드의 내용은 다음과 같습니다.
"company": {
"CompanyID": 112233445566,
"URL": null,
"CompanyName": "Some Real Estate Bla bla Contact Office",
"PartyNature": "Contact Office",
"CompanyType": 26,
"SubNature": null,
"Description": "",
"DescriptionLocal": "",
"ImagePath": null,
"Phone1": "+90 987 111 11 11",
"Phone2": "",
"Fax": null,
"ContactEmail": "[email protected]",
"NatureID": null,
"PartySubNatureID": null,
"CityID": "123",
"CountyID": "456",
"DistrictID": "789",
"id": 14487,
"userId": 35754
}
버전 : PostgreSQL을 : PostgreSQL의 9.5.2 x86_64에-사과 darwin14.5.0에 애플 LLVM 버전 7.0.2 (그 소리-700.1.81), 64 비트에 의해 컴파일
교리 - DBAL : v2.5.2 것 같아요
는, 대단히 @hkulekci 감사합니다 : DB 라이브러리의
많은이 문제가 – ilhnctn