sql >> Database >  >> NoSQL >> MongoDB

Symfony QueryBuilder retourneert MongoDB-cursor in plaats van objectarray

U hebt de Eager MongoDB-cursor nodig om query's te herhalen. Ik ga je code bewerken om het je gemakkelijker te maken:

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 kunt u het resultaat herhalen met alle resultaten als objecten erin.

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

Het is de beste manier om dit te doen, soms is het aanroepen van de methode toArray() voldoende, maar werkt niet altijd.




  1. django-nonrel sluit lijstveld uit van admin

  2. Kan geen verbinding maken met MongoDB via PHP

  3. Hoe de huidige bezetting van de verbindingspool op de klant te krijgen met behulp van mongo .net-stuurprogramma?

  4. Mongoose findOneAndUpdate en upsert retourneert geen fouten, geen documenten beïnvloed