Вопрос по sql, php, mysql, zend-framework, pdo – Как установить значение в NULL при использовании Zend_Db

6

При выполнении запросов UPDATE и INSERT с использованием Zend_Db мне часто приходится устанавливать значения, равные NULL (не '' '). Однако поведение Zend_Db :: insert () и Zend_Db :: update () по умолчанию, по-видимому, состоит в том, что значения, которые являются пустыми, переводятся в пустые строки ('' ') и помещаются в базу данных как таковые.

Кто-нибудь знает способ на самом деле заставить значение NULL идти в поля, если значение пусто в php?

Ваш Ответ

4   ответа
22

new Zend_Db_Expr('NULL')

Мне нравится этот метод дляabstraction что этот метод дает вам
4

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

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

но сталкивались с ситуациями, когда в самой базе данных был установлен столбец NOT NULL, и в таких случаях значение действительно конвертировалось либо в пустую строку, либо в случае FLOATs в 0,00. Я думаю, что столбец INT будет в итоге 0 ;-)

0

кто может посещать эту проблему, я смог использовать это сУильям Ланненответ, обеспечивающий некоторое вдохновение. Если предположить,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;
    }
}

Похожие вопросы