Doctrine findBy *方法和获取数组

时间:2011-04-05 13:19:56

标签: php symfony1 doctrine

使用Doctrine findBy方法的最简洁方法是什么,但是返回一个数组而不是对象。

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

这有效但返回一个学说对象。

我仍然希望能够使用find方法,但我知道我无法添加

->fetchArray()

最后。

其他人有这个问题吗?

4 个答案:

答案 0 :(得分:19)

使用魔术探测器时可以指定水合模式,如下所示:

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

答案 1 :(得分:4)

尝试使用toArray

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

答案 2 :(得分:3)

Haim Evgi和DuoSRX的答案都是正确的,但是在使用Symfony时,我更喜欢两种版本:

假设你的模型名称是Person,你可以使用:

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

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

答案 3 :(得分:1)

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

其中em是entityManager - 您使用getArrayResult

将结果作为数组获得