Доктрина 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 потом.

Другие вопросы по тегам