sql >> Databáze >  >> NoSQL >> MongoDB

Symfony QueryBuilder vrací MongoDB kurzor místo pole objektů

K iteraci dotazů potřebujete kurzor Eager MongoDB. Upravím váš kód, abych vám to usnadnil:

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

Nyní můžete výsledek iterovat se všemi výsledky jako objekty uvnitř.

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

Je to nejlepší způsob, jak toho dosáhnout, někdy stačí volání metody toArray(), ale ne vždy to funguje.




  1. Mongo-PHP - Výjimka MongoCursor s ovladačem MongoDB PHP Driver v1.6

  2. Automatické zvýšení sekvence v mongodb pomocí Java

  3. arrayFilters v mongodb

  4. Hledání Mongoose / mongoDb, kde potřebuji hodnoty nenaplněné vlastnosti