如何使用Zend_Db的时候设置一个值设置为null(How to Set a Value to N

2019-06-26 15:49发布

当执行UPDATE和使用Zend_Db的INSERT查询,我经常需要相等的值设置为NULL(而不是“”)。 然而,Zend_Db的默认行为::插入()和Zend_Db的:: update()方法似乎是是空值转换为空字符串(“”),并放入数据库等。

有谁知道的方式其实就是强迫一个NULL值进入字段值是否在PHP空?

Answer 1:

尝试将受影响的字段设置为: new Zend_Db_Expr('NULL')



Answer 2:

我总是刚刚能做到这一点使用PHP的空:

$toUpdate = array('nullValue' => null, 'otherValue' => 'something');
Zend_Db::update($table, $toUpdate, $where);


Answer 3:

作为Johrn我可以用PHP的空值做到这一点:

$value = null;
$what = array($columnName => $value);
$where = $this->_dbTableName->getAdapter()->quoteInto('Id = ?', $dbRecord->Id);
$this->_dbTableName->update($what, $where);

但遇到到数据库本身有列设置为NOT NULL,在这种情况下,价值确实转化为要么是空字符串或漂浮物的情况下,以0.00的情况。 我想INT柱将最终为0 ;-)



Answer 4:

虽然使用Zend 2.4.7对于那些谁可访问这个问题上,我能够使用这项功能威廉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;
    }
}


文章来源: How to Set a Value to NULL when using Zend_Db