2016-02-02 14 views
7

私には、例えば、任意のMongoDB JSON検索クエリ文字列を持っている:Doctrine MongoDB - JSONからクエリを作成する方法はありますか?

{ "address.city": "Seattle"} 

または

{ qty: { $gt: 5, $lt: 50 } 

JSON文字列からDoctrine.MongoDB.Queryオブジェクトを作成するために、既存の方法がありますか?あるいは、mongoに直接問い合わせを行い、その結果を水和の教義に引き渡すことができますか?

+0

それはハックですが、現在、私は余分なクエリを実行することによってこの問題を回避働いています。最初のJSONクエリはmongoに対して直接実行され、すべての_idsが$ idListとして収集されます。次に、doctrineクエリをフィールド( 'id') - > in($ idList)として実行します。 – tgreiser

答えて

0

私は自分で使ったことはありませんが、この最近のバンドルは、この目的を達成するために作成されたようです(querybuilderjs into doctrine)。

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(); 
1

JSON文字列からDoctrine.MongoDB.Queryオブジェクトを作成する方法はありますか?

この時点では、BuildersetQueryメソッドを追加できました。もっと面倒ですが、働いていると、自分でQueryクラスをインスタンス化します。

代わりに、mongoを直接クエリし、その結果を水分調整のための教義に渡すことができますか?

あなたは(あなたがUnitOfWorkに飛び込むことを恐れていないよ)のデータと、単なる配列を持ってたら、$dm->getUnitOfWork()->getOrCreateDocument()を利用またはHydratorFactoryを採用し、後でDocumentManagerに文書をマージすることがあります。

関連する問題