phpdoctrinedoctrine-ormdoctrine-query

How to fetch class instead of array in Doctrine 2


I am able to fetch my data from database by using this structure:

$user = $this->getDoctrine()
->getRepository('AcmeDemoBundle:Emails')
->find(8081);

When I do that, I am able to get my data like this:

$user->getColumnNameHere();

Basically, I am able to use Entity Class.

But if I want to use QueryBuilder instead of find I am only getting associative arrays.

$product->createQueryBuilder('p')
        ->setMaxResults(1)
        ->where('p.idx = :idx')
        ->select('p.columnNameHere')
        ->setParameter('idx', 8081)
        ->orderBy('p.idx', 'DESC')
        ->getQuery();
        $product = $query->getResult();

$product returns as array. Is it possible to fetch it with Entity Manager Class? If yes, how?

I digg the documentation but it seems not possible or not exist in the doc or I'm just blind :)


Solution

  • Yes you can, usually using:

    $repository
        ->createQueryBuilder('p')
        ->getQuery()
        ->execute()
    ;
    

    This should return you an array of entities.

    If you want to get a single entity result, use either getSingleResult or getOneOrNullResult:

    $repository
        ->createQueryBuilder('p')
        ->getQuery()
        ->getOneOrNullResult()
    ;
    

    Warning: These method can potentially throw NonUniqueResultException.

    Edit: Ok, so the question was about partial objects: http://docs.doctrine-project.org/en/latest/reference/partial-objects.html