2017-12-12 15 views
0

doctrine 2 (MySQL 데이터베이스)에 json 열을 사용합니다. 는 사실, 난 기본 쿼리없이 json 필드에 doctrine findby를 만드는 방법

$rsm = new ResultSetMappingBuilder($entityManager); 
$rsm->addRootEntityFromClassMetadata(\blabla\MyObject::class, 'o'); 
$query = $entityManager->createNativeQuery('select o.* from my_objects o where json_extract(jsonData, "$.test.key1")= "value1"', $rsm); 
//jsonData column contains {"test": {"key1" : "value1"}} 
$result = $query->getResult(); 

이 가능 네이티브 쿼리 메커니즘없이 그와 같은 만든 쿼리

같은 기본 쿼리 json 내 검색을했다? 당신의 도움에 미리

감사 (A findBy처럼)

답변

0

) 나는 내 문제를 해결했다. I found this extension of DQL.

$queryBuilder = $entityManager->createQueryBuilder(); 
$query = $queryBuilder 
    ->select("o") 
    ->from(\bla\bla\MyObject::class, "o") 
    ->where("JSON_EXTRACT(o.jsonData, :jsonPath) = :value ") 
    ->setParameter('jsonPath', '$.test.key1') 
    ->setParameter('value', 'value1') 
    ->getQuery(); 

$co = $query->getResult();