2016-02-02 15 views
7

Tôi có một MongoDB JSON chuỗi tìm truy vấn tùy ý, ví dụ:Doctrine MongoDB - có cách nào để xây dựng một truy vấn từ JSON không?

{ "address.city": "Seattle"} 

hoặc

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

Có bất kỳ phương pháp hiện có để tạo ra một đối tượng Doctrine.MongoDB.Query từ chuỗi JSON? Hoặc luân phiên để truy vấn mongo trực tiếp và sau đó vượt qua những kết quả đó để học thuyết cho hydrat hóa?

+0

Đó là một hack, nhưng hiện tại tôi đang làm việc này bằng cách chạy một truy vấn thêm. Truy vấn JSON đầu tiên chạy ngược lại mongo trực tiếp và thu thập tất cả các _ids dưới dạng $ idList. Sau đó, chạy truy vấn doctrine as field ('id') -> in ($ idList) – tgreiser

Trả lời

0

Tôi chưa tự sử dụng, nhưng gói gần đây này dường như đã được tạo để phục vụ mục đích chính xác này (querybuilderjs vào học thuyết).

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

Có phương pháp hiện có nào để tạo đối tượng Doctrine.MongoDB.Query từ chuỗi JSON không?

Hiện tại, chúng tôi không thể thêm phương thức setQuery vào Builder. Tẻ nhạt hơn, nhưng đang hoạt động, sẽ tự mình lập tức tự mình là Query.

Hoặc luân phiên để truy vấn mongo trực tiếp và sau đó chuyển các kết quả đó vào học thuyết cho hydrat hóa?

Một khi bạn có mảng đồng bằng với các dữ liệu (và bạn không sợ để đi sâu vào UnitOfWork), bạn có thể sử dụng $dm->getUnitOfWork()->getOrCreateDocument() hoặc sử dụng HydratorFactory và hợp nhất các tài liệu vào DocumentManager sau.

Các vấn đề liên quan