MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Symfony QueryBuilder връща MongoDB курсор вместо обектен масив

Имате нужда от курсора Eager MongoDB, за да повтаряте заявки. Ще редактирам кода ви, за да ви улесня:

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

Сега можете да итерирате резултата с всички резултати като обекти вътре.

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;
}

Това е най-добрият начин да направите това, понякога извикването на метода toArray() е достатъчно, но не винаги работи.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Изкривено натоварване при четене на комплект реплики на Mongo

  2. insertMany Обработка на дублиращи се грешки

  3. mongodb:как да отстранявате грешки в map/reduce на mongodb shell

  4. Mongoimport на JSON файл

  5. Mongodb $push във вложен масив