2012-08-17 48 views
0

我的問題是完全相同的How to Set a Value to NULL when using Zend_Db調用Zend_Db的:: update()方法時設置的值設置爲null,並插入()

然而,在這個問題給出的解決方案是不是爲我工作。我的代碼如下所示。在前端單擊更新時,我在Model類上調用updateOper。裏面updateOper,我調用另一個函數trimData()我第一次修剪所有空格,然後我還要檢查,如果某些字段中empty''來了我想將它們設置爲默認值或NULL值。因此我使用new Zend_db_expr('null')new Zend_db_expr('default')

的代碼如下:

private function trimData(&$data) { 

    //Trim whitespace characters from incoming data. 
    foreach($data as $key => $val) 
    { 
     $data[$key] = trim($val); 
     if($data['notes'] == '') { 
      error_log("set notes to null/default value"); 
      $data['notes'] = new Zend_db_expr('DEFAULT'); 
     } 
    } 

} 

public function updateOper($data, $id) 
{ 
    $result = 0; 

    $tData = $this->trimData($data); 

    error_log("going to add data as ".print_r($data, true)); 
    $where = $this->getAdapter()->quoteInto('id = ?', $id); 
    $result = $this->update($data, $where); 

    return $result; 
} 

error_log語句打印$data array如下:

[id] => 10  
[name] => alpha 
[notes] => DEFAULT 

其結果是,該notes列具有值= '默認' 代替採摘表定義中給出的默認值。

我一直在試圖找出什麼是錯的,但一直沒能找到解決的辦法。 我真的很感激你的幫助。

非常感謝!

+0

另一個觀察:我添加的錯誤日誌中trimData()函數將其設置爲zend_db_expr後打印的紙幣的值,並將其打印:expr之後的音符值爲'Zend_Db_Expr對象 ( [_expression:保護] => DEFAULT ) 然而,當我在打印updateOper()函數的值相同的數據陣列的一部分它不顯示它作爲一個對象,但只是作爲一個字符串DEFAULT。它需要被解釋爲對象,然後只有這個才能工作。但是我在這裏錯過了什麼? – 2012-08-17 01:00:13

回答

1

您的$ data ['notes']正在更改爲Zend_Db_Expr__toString()值,而不是保留實際對象。

也許基準堵塞的事情了。否則,您可能需要將表達式聲明移至實際的更新查詢中。

+0

謝謝RockyFord - 這是原因。我必須將'trimData(&$ data)'的函數簽名更改爲'trimData($ data)',然後將修改後的'$ data'數組返回到'updateOper'函數。現在它工作正常。 – 2012-08-20 18:57:30

相關問題