我json在doctrine 2(MySQL数据库中)使用列。实际上,我使用json类似
json
doctrine 2
MySQL
$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();
如果没有本机查询机制,是否可能像这样进行查询?(如findBy)
在此先感谢您的帮助 ;)
我解决了我的问题。 我找到了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();