我的问题是完全相同的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
列具有值= '默认' 代替采摘表定义中给出的默认值。
我一直在试图找出什么是错的,但一直没能找到解决的办法。 我真的很感激你的帮助。
非常感谢!
另一个观察:我添加的错误日志中trimData()函数将其设置为zend_db_expr后打印的纸币的值,并将其打印:expr之后的音符值为'Zend_Db_Expr对象 ( [_expression:保护] => DEFAULT ) 然而,当我在打印updateOper()函数的值相同的数据阵列的一部分它不显示它作为一个对象,但只是作为一个字符串DEFAULT。它需要被解释为对象,然后只有这个才能工作。但是我在这里错过了什么? – 2012-08-17 01:00:13