2014-10-01 57 views
1

我想用Zend 2.3構建一個應用程序。它基於(也非常類似於)Zend教程的Album application。雖然我的應用程序處理Person對象而不是Album對象。列名必須與Zend中的變量名匹配嗎?

當我開始時,我給了我的id列名稱'ID',而不是像教程中的'id'。因此,在Person類我extractArray功能是這樣的:

public function exchangeArray($data) 
{ 
    $this->id = (isset($data['ID'])) ? $data['ID'] : null; // <- DB column name is ID, not id 
    $this->name = (isset($data['name'])) ? $data['name'] : null; 
    $this->initials = (isset($data['initials'])) ? $data['initials'] : null; 
    $this->title = (isset($data['title'])) ? $data['title'] : null; 
    $this->description = (isset($data['description'])) ? $data['description'] : null; 
    $this->email = (isset($data['email'])) ? $data['email'] : null; 
} 

我不能得到這個工作。添加或刪除一個人順利進行。但是當我試圖編輯一個人時,它被當作插入。經過幾個小時的調試之後,我能夠確定的是,在表單驗證過程中,Person對象的id變爲null,導致farmework認爲記錄是新的而不是編輯的。我真的不知道如何更準確。我沒有對錶單的驗證做任何事情,它與示例Album應用程序完全相同。

當我將列名更改爲'id'並相應地更新了代碼後,一切正常。這似乎表明......究竟是什麼?數據庫名稱必須小寫?不太可能。數據庫名稱必須與變量名稱相同?有點更可能,但對我來說似乎很奇怪。

我的問題是:我的第一次嘗試出了什麼問題,是否有另一種方法來解決它,除了改變列名?

+1

請考慮展示更多代碼,例如'editAction','AlbumForm','AlbumModel' ... – 2014-10-01 11:53:57

回答

0

不是真的。當您嘗試保存時,問題就出現了,因爲您會傳遞一個類,並且屬性與列名稱不匹配,但是對於獲取方式而言,您可以按照自己的方式進行操作,並且它應該可以正常工作。

相關問題