Doctrine MongoDB - 有什么方法可以从 JSON 构建查询吗?
Doctrine MongoDB - is there any way to build a query from JSON?
我有一个任意的MongoDBJSON查找查询字符串,例如:
{ "address.city": "Seattle"}
或
{ qty: { $gt: 5, $lt: 50 }
是否有任何现有方法可以从 JSON 字符串创建 Doctrine.MongoDB.Query 对象?或者直接查询 mongo 然后将这些结果传递给 doctrine 进行水合作用?
Is there any existing method to create a Doctrine.MongoDB.Query object from the JSON string?
目前没有,但是我们可以将 setQuery
方法添加到 Builder
。更乏味但有效的是,您自己实例化 Query
class。
Or alternately to query mongo directly and then pass those results to doctrine for hydration?
一旦你有了带有数据的普通数组(并且你不怕深入 UnitOfWork
),你可以使用 $dm->getUnitOfWork()->getOrCreateDocument() 或使用 HydratorFactory
并将文档合并到 DocumentManager
稍后。
我自己没有使用过它,但是这个最近的包似乎就是为了这个目的而创建的(querybuilderjs 到学说中)。
https://github.com/fourlabsldn/QBJSParserBundle
https://github.com/fourlabsldn/QBJSParser
$parsedRuleGroup = $this->get('fl_qbjs_parser.json_query_parser.doctrine_orm_parser')->parseJsonString($jsonString, Product::class);
$query = $this->get('doctrine.orm.entity_manager')->createQuery($parsedRuleGroup->getDqlString());
$query->setParameters($parsedRuleGroup->getParameters());
$results = $query->execute();
我有一个任意的MongoDBJSON查找查询字符串,例如:
{ "address.city": "Seattle"}
或
{ qty: { $gt: 5, $lt: 50 }
是否有任何现有方法可以从 JSON 字符串创建 Doctrine.MongoDB.Query 对象?或者直接查询 mongo 然后将这些结果传递给 doctrine 进行水合作用?
Is there any existing method to create a Doctrine.MongoDB.Query object from the JSON string?
目前没有,但是我们可以将 setQuery
方法添加到 Builder
。更乏味但有效的是,您自己实例化 Query
class。
Or alternately to query mongo directly and then pass those results to doctrine for hydration?
一旦你有了带有数据的普通数组(并且你不怕深入 UnitOfWork
),你可以使用 $dm->getUnitOfWork()->getOrCreateDocument() 或使用 HydratorFactory
并将文档合并到 DocumentManager
稍后。
我自己没有使用过它,但是这个最近的包似乎就是为了这个目的而创建的(querybuilderjs 到学说中)。
https://github.com/fourlabsldn/QBJSParserBundle
https://github.com/fourlabsldn/QBJSParser
$parsedRuleGroup = $this->get('fl_qbjs_parser.json_query_parser.doctrine_orm_parser')->parseJsonString($jsonString, Product::class);
$query = $this->get('doctrine.orm.entity_manager')->createQuery($parsedRuleGroup->getDqlString());
$query->setParameters($parsedRuleGroup->getParameters());
$results = $query->execute();