一尘不染

如何在没有本机查询的情况下将理论查找到JSON字段

json

jsondoctrine 2MySQL数据库中)使用列。实际上,我使用json类似

$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)

在此先感谢您的帮助 ;)


阅读 220

收藏
2020-07-27

共1个答案

一尘不染

我解决了我的问题。 我找到了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();
2020-07-27