MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Symfony QueryBuilder trả về con trỏ MongoDB thay vì mảng đối tượng

Bạn cần con trỏ Eager MongoDB để lặp lại các truy vấn. Tôi sẽ chỉnh sửa mã của bạn để giúp bạn dễ dàng hơn:

class UserRepository extends DocumentRepository {
    public function getUserTemp($clauses = null)
    {
        /* Create query */

        $qb = $this->createQueryBuilder()->eagerCursor(true);

        /* Add clauses */

        if($clauses)
        {
            // It's a way to initialize the query, you can use a select or something similar
            $query = $qb->hydrate(true);

            if(isset($clauses['id']))
                $query -> field('id') -> equals($clauses['id']);

            if(isset($clauses['firstName']))
                $query -> field('firstName') -> equals($clauses['firstName']);

            if(isset($clauses['lastName']))
                $query -> field('lastName') -> equals($clauses['lastName']);

            if(isset($clauses['email']))
                $query -> field('email') -> equals($clauses['email']);

            if(isset($clauses['password']))
                $query -> field('password') -> equals($clauses['password']);
        }

        /* Return */

        return $query
            -> getQuery()
            -> execute();
    }
}

Bây giờ bạn có thể lặp lại kết quả với tất cả các kết quả dưới dạng các đối tượng bên trong.

private function getUserAction()
{
    $manager = $this -> get('doctrine_mongodb') -> getManager();
    $repository = $manager -> getRepository('LogAnalyzerCoreBundle:User');

    $users = $repository -> getUserTemp(array(
        'firstName' => 'First'
    ));
    //It's just an example, but here you can see how to get the query result data
    foreach($users as $user){
        $data[] = $user->getFirstName();
    }

    return $users;
}

Đó là cách tốt nhất để làm điều này, đôi khi gọi phương thức toArray () là đủ, nhưng không phải lúc nào cũng hoạt động.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tải chậm / Cuộn dữ liệu khác trong Mongoose / Nodejs

  2. MongoDB elemMatch không hoạt động như mong đợi

  3. Truy vấn Bản ghi Hoạt động trong đó giá trị trong trường mảng

  4. MongoDB / Morphia lưu id kỹ thuật dưới dạng ObjectId mặc dù nó là một chuỗi trong Java

  5. Cách tốt nhất để xác thực và cấp phép một giải pháp web và api như MERN Stack là gì?