sql >> Databasteknik >  >> NoSQL >> MongoDB

Symfony QueryBuilder returnerar MongoDB-markör istället för objektarray

Du behöver Eager MongoDB-markören för att iterera frågor. Jag kommer att redigera din kod för att göra det enklare för dig:

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

Nu kan du iterera resultatet med alla resultat som objekt inuti.

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

Det är det bästa sättet att göra detta, ibland räcker det att anropa toArray()-metoden, men det fungerar inte alltid.




  1. mongodb hur man ändrar standardport

  2. Mongodb välj alla fält gruppera efter ett fält och sortera efter ett annat fält

  3. Mongoose förfaller data men behåll i databasen

  4. Hur man begränsar maximal referens för föräldranoden i mongodb