Doctrine_Null
имеет только два метода, и тот, который, кажется, имеет отношение, является __toString
методом. Итак, чтобы активировать магический метод, вам нужно привести в качестве строки:
$record = $table->getTable()->find( $id );
$record->parent_id = (string) new Doctrine_Null;
$record->save();
Но, честно говоря, нет никакой причины, поскольку Doctrine_Null
просто абстрагирует пустую строку ''
. Я могу только предположить, что это работает только в этом сценарии, потому что parent_id не применяет атрибут NULL
.
Установка значения 'NULL' работает , но на самом деле это строка, а не NULL.
'NULL' !== null
Дайте ему шанс, если вы вставите 'NULL' в одну строку, а другая строка будет "естественной NULL", вы вытащите обе строки из таблицы и сделаете var_dump(serialize())
для каждой, вы увидите является естественным нулем, а other на самом деле является строкой.
Если вы хотите поддерживать согласованность и применять естественные значения NULL, используйте вместо этого:
$record = $table->getTable()->find( $id );
$record->parent_id = new Doctrine_Expression('NULL');
$record->save();