MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Symfony QueryBuilder zwracający kursor MongoDB zamiast tablicy obiektów

Potrzebujesz kursora Eager MongoDB do iteracji zapytań. Zmodyfikuję Twój kod, aby ułatwić Ci to:

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

Teraz możesz iterować wynik ze wszystkimi wynikami jako obiektami w środku.

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

Jest to najlepszy sposób, czasami wystarczy wywołanie metody toArray(), ale nie zawsze działa.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak usunąć bazę danych MongoDB z wiersza poleceń?

  2. Architektura systemu logowania na stosie MEAN?

  3. MongoDB:sprawdź połączenie z DB

  4. Nie można zapełnić dużej części danych do mongodb za pomocą Node.js

  5. Nie można uruchomić MongoDB:Błąd systemu 1067 w systemie Windows