什麼是使用Doctrine findBy方法的最簡潔的方式,但得到一個數組返回而不是對象。學說findBy *方法和讀取數組
Doctrine::getTable('Table')->findOneById(x);
這有效,但返回一個原則對象。
我還是希望能夠使用find方法,但我知道我不能在末尾添加
->fetchArray()
。
其他人有這個問題嗎?
什麼是使用Doctrine findBy方法的最簡潔的方式,但得到一個數組返回而不是對象。學說findBy *方法和讀取數組
Doctrine::getTable('Table')->findOneById(x);
這有效,但返回一個原則對象。
我還是希望能夠使用find方法,但我知道我不能在末尾添加
->fetchArray()
。
其他人有這個問題嗎?
嘗試使用toArray
Doctrine::getTable('Table')->findOneById(x)->toArray();
可以使用魔法發現者時指定的水化模式,就像這樣:
Doctrine_Core::getTable('Table')->findOneById($x, Doctrine_Core::HYDRATE_ARRAY);
哈伊姆Evgi和DuoSRX的答案是正確的,但有一個稍微不同的版本我更喜歡使用Symfony時:
假設您的型號名稱是Person,您可以使用:
PersonTable::getInstance()->findOneById(x)->toArray();
或
PersonTable::getInstance()->findOneById($x, Doctrine_Core::HYDRATE_ARRAY);
那有什麼區別? – NBPalomino 2014-12-05 17:27:25
@ NBPalomino:第一個檢索完整的對象並將其轉換爲數組,第二個直接以數組的形式檢索它(它使用較少的內存並且速度更快)。我建議您在需要檢索信息而不更新數據庫時使用Array Hydration。 – Fx32 2016-02-12 12:39:31
$adCampaign = $em->createQuery('select c from \Model\Campaign c where c.client = ?1')
->setParameter(1, $clientId)
->getArrayResult();
其中EM是EntityManager的 - 你得到的結果作爲數組getArrayResult
我想你會發現你的答案與支持命名空間和實體管理器服務的Symfony 2.x(Doctrine 2)相關,而原始問題被標記爲Symfony 1 – nealio82 2012-10-12 08:38:29
如果你這樣做,你會先取一個對象,然後將其轉換爲數組,這在內存方面效率不高。 – DuoSRX 2011-04-05 14:00:40