Doctrine findBy* methods and fetch array

25,497

Solution 1

Try use toArray

Doctrine::getTable('Table')->findOneById(x)->toArray();

Solution 2

You can specify the hydration mode when using magic finders, like so:

Doctrine_Core::getTable('Table')->findOneById($x, Doctrine_Core::HYDRATE_ARRAY);

Solution 3

Haim Evgi and DuoSRX's answers are correct, but there's a slightly different version for both that I prefer when using Symfony:

Let's say your model name is Person, you would use:

PersonTable::getInstance()->findOneById(x)->toArray();

or

PersonTable::getInstance()->findOneById($x, Doctrine_Core::HYDRATE_ARRAY);

Solution 4

$adCampaign = $em->createQuery('select c from \Model\Campaign c where c.client = ?1')
->setParameter(1, $clientId)
->getArrayResult();

where em is the entityManager - you get the result as array with getArrayResult

Share:
25,497
Admin
Author by

Admin

Updated on February 22, 2020

Comments

  • Admin
    Admin about 4 years

    What is the cleanest way of using the Doctrine findBy methods but getting an array returned and not objects.

    Doctrine::getTable('Table')->findOneById(x);
    

    That works but returns a doctrine object.

    I'd still like to be able to use the find methods but I know I can't add

    ->fetchArray()
    

    on the end.

    Anyone else had this problem?