Doctrine_Null
ma tylko dwa sposoby, a ten, który wydaje się odnosić jest __toString
metoda. Tak więc w celu aktywacji magiczną metodę trzeba rzucać jako ciąg:
$record = $table->getTable()->find($id);
$record->parent_id = (string) new Doctrine_Null;
$record->save();
Ale szczerze mówiąc nie ma powodu, jak Doctrine_Null
tylko abstrakty pusty ciąg ''
. Mogę tylko założyć, że działa tylko w tym scenariuszu, ponieważ parent_id nie wymusza atrybutu NULL
.
Ustawienie wartości "NULL" pojawia się do pracy, ale jest w rzeczywistości ciągiem, a nie NULL.
'NULL' !== null
Daj mu szansę, jeśli włożysz „null” w jednym rzędzie, a drugi wiersz jest „naturalnym NULL”, i można wyciągnąć zarówno wiersze z tabeli i zrobić var_dump(serialize())
na siebie, będziesz patrz jeden jest naturalny zerowy, a inny jest w rzeczywistości ciągiem.
Jeśli chcesz zachować naturalne wartości null i egzekwować zgodność, użyj zamiast tego:
$record = $table->getTable()->find($id);
$record->parent_id = new Doctrine_Expression('NULL');
$record->save();
Czy twoja definicja tabeli podać 0 jako wartość domyślną dla 'parent_id'? – BenV
Nie, wartość domyślnie = null NULL – ajile