2009-07-23 13 views
5

Zend_Dbを使用してUPDATEおよびINSERTクエリを実行するとき、頻繁に値をNULL( ''ではなく)に設定する必要があります。しかし、Zend_Db :: insert()とZend_Db :: update()のデフォルトの動作は、空の値が空の文字列( '')に変換されてデータベースに格納されるようです。Zend_Dbを使用するときに値をNULLに設定する方法

誰かが値が空であれば実際にNULL値をフィールドに入力する方法を知っていますか?私はいつもちょうどPHPのnullを使用して、これを行うことができましたnew Zend_Db_Expr('NULL')

答えて

19

はに影響を受けたフィールドを設定してみてください値:

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

が、データベース自体は、NOT NULLに設定する列を持っていたと、そのようなC言語で状況に遭遇しました値は実際に空の文字列に変換されたか、またはFLOATの場合に0.00に変換されました。私はINT列が0になると思います;-)

+1

getTable()返しますZend\Db\TableGatewayオブジェクトを仮定すると、 –

4

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

私はPHPのnullでこれを行うことができたJohrnとして

0

この問題を巡っている人にはZend 2.4.7を使っていますが、私はWilliam Lannenの答えでこれを使うことができました。この方法は、あなたに与えることを私は_abstraction_ため、この方法が好き

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; 
    } 
} 
関連する問題