Доктрина MongoDB - есть ли способ построить запрос из JSON?
У меня есть произвольная строка запроса MongoDB JSON, например:
{ "address.city": "Seattle"}
или же
{ qty: { $gt: 5, $lt: 50 }
Существует ли какой-либо существующий метод для создания объекта Doctrine.MongoDB.Query из строки JSON? Или поочередно запросить монго напрямую, а затем передать эти результаты доктрине для гидратации?
2 ответа
Я не использовал его сам, но этот последний пакет, похоже, был создан, чтобы служить именно этой цели (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();
Существует ли какой-либо существующий метод для создания объекта Doctrine.MongoDB.Query из строки JSON?
На данный момент нет, однако мы могли бы добавить setQuery
метод к Builder
, Более утомительным, но работающим, было бы создание экземпляров Query
класс самостоятельно.
Или поочередно запросить монго напрямую, а затем передать эти результаты доктрине для гидратации?
Как только у вас есть простые массивы с данными (и вы не боитесь погрузиться в UnitOfWork
) вы можете использовать $dm->getUnitOfWork()->getOrCreateDocument() или использовать HydratorFactory
и объединить документы в DocumentManager
потом.