我是新來學習和了解Hydration如何工作,只是想先指出。我目前能夠保存選擇並插入查詢,沒有任何問題。保溼數據庫
我目前被困在嘗試水合物更新查詢現在。在我的實體中,我爲數據庫中的每種類型的列設置了get/set選項。我發現ObjectProperty()Hydrator也適用於我的情況。
但是,每當我嘗試更新只有一定數量的列和提取通過hydrator我收到錯誤,因爲所有其他選項都沒有設置,並返回空值。我不需要更新特定行的所有內容,只需要幾列。
舉例來說,在我的數據庫表我可能有:
- 名
- PHONE_NUMBER
- EMAIL_ADDRESS
但我只需要更新PHONE_NUMBER。
$entity_passport = $this->getEntityPassport();
$entity_passport->setPrimaryPhone('5551239876');
$this->getTablePassport()->update($this->getHydrator()->extract($entity_passport), array(
'employeeid' => '1'
));
因爲的setName()和setEmailAddress()不包括在此更新和查詢返回的值不能爲null這將返回一個錯誤。但很明顯,當您查看數據庫表時,數據已經存在。那裏的數據也不需要改變,只有在這個例子中使用PrimaryPhone()號碼。
我一直在尋找和閱讀所有地方的文檔,但我找不到任何可以解釋我做錯了什麼。我應該注意到我只使用Zend \ Db(Not Doctrine)。
我假設我錯過了某個地方,因爲我對這個新功能缺乏知識,我試圖去理解。
也許你不水合更新查詢...我有點迷路/困惑。任何幫助,將不勝感激。謝謝!
是的,這對我來說還是很新的,所以我處於困惑的狀態。你的回答確實有幫助。但如果你能幫我一個忙,並告訴我什麼$ passportMapper-> findByEmployeeId(1);看起來像這將是非常有益的。我認爲這是TableGateway中的一項功能,它可以做一些選擇? – Diemuzi
請參閱上面答案中的編輯。希望這可以幫助。 – Ruben
太近了!也許這將有助於更多https://gist.github.com/diemuzi/5992149 這是我的護照實體,護照表和我試圖做的更新的GIST。當我運行這個時,我不再收到任何錯誤,我可以看到更新查詢正在工作,除了它將SecondaryPhone設置爲空。所以我必須錯過這裏的最後一點。也許你可以看到我沒有的東西。如果我做''$ this-> getHydrator($ result) - > extract($ entity)'''然後我看到SecondaryPhone被設置了,但其他的都是NULL。 – Diemuzi