Доктрина findBy * методы и выборка массива - PullRequest
3 голосов
/ 05 апреля 2011

Какой самый чистый способ использования методов findBy в Doctrine, но с возвратом массива, а не объектов.

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

Это работает, но возвращает объект доктрины.

Я все еще хотел бы использовать методы поиска, но я знаю, что не могу добавить

->fetchArray()

на конце.

Кто-нибудь еще имел эту проблему?

Ответы [ 4 ]

19 голосов
/ 05 апреля 2011

Вы можете указать режим увлажнения при использовании магических искателей, например:

Doctrine_Core::getTable('Table')->findOneById($x, Doctrine_Core::HYDRATE_ARRAY);
4 голосов
/ 05 апреля 2011

Попробуйте использовать toArray

Doctrine::getTable('Table')->findOneById(x)->toArray();
3 голосов
/ 05 апреля 2011

Ответы Haim Evgi и DuoSRX верны, но для обоих я предпочитаю немного отличную версию:

Допустим, ваша модель называется Person, вы бы использовали:

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

или

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

1 голос
/ 27 сентября 2011
$adCampaign = $em->createQuery('select c from \Model\Campaign c where c.client = ?1')
->setParameter(1, $clientId)
->getArrayResult();

где em - entityManager - вы получите результат в виде массива с getArrayResult

...