使用Zend_Db执行UPDATE和INSERT查询时,我经常需要将值设置为NULL(不是'')。然而,Zend_Db :: insert()和Zend_Db :: update()的默认行为似乎是将空值转换为空字符串('')并放入数据库中。如何在使用Zend_Db时将值设置为NULL
有没有人知道的方法来实际强制NULL值进入字段,如果值为空的PHP?
使用Zend_Db执行UPDATE和INSERT查询时,我经常需要将值设置为NULL(不是'')。然而,Zend_Db :: insert()和Zend_Db :: update()的默认行为似乎是将空值转换为空字符串('')并放入数据库中。如何在使用Zend_Db时将值设置为NULL
有没有人知道的方法来实际强制NULL值进入字段,如果值为空的PHP?
尝试将受影响的字段设置为:new Zend_Db_Expr('NULL')
我一直只是能做到这一点使用PHP的空值:
$toUpdate = array('nullValue' => null, 'otherValue' => 'something');
Zend_Db::update($table, $toUpdate, $where);
由于Johrn我可以用PHP的空做到这一点值:
$value = null;
$what = array($columnName => $value);
$where = $this->_dbTableName->getAdapter()->quoteInto('Id = ?', $dbRecord->Id);
$this->_dbTableName->update($what, $where);
但遇到数据库本身将列设置为NOT NULL的情况,并且在这样的c ases的值确实转换为空字符串或在FLOAT的情况下为0.00。我猜INT列最终会成为0 ;-)
虽然对于可能访问此问题的人使用Zend 2.4.7,但我可以在William Lannen的答案中使用这个提供一些灵感。假设getTable()
回报Zend\Db\TableGateway
对象:
public function fetch()
{
$data['column_name1 = ?'] = 'column_value';
$data[] = new \Zend\Db\Sql\Predicate\IsNull('column_name2');
$resultSet = $this->getTable()->select($data);
if (0 === count($resultSet) {
return 'SomeExpectationOrException';
} else {
return $resultSet;
}
}
我喜欢的_abstraction_这种方法,这种方法给你 – 2009-07-24 02:14:29