/** * Change column from null to not null * @param Field $field */ public function changeFieldToNotNullable($field) { $result = PerfORMController::getConnection()->query('select * from %n where %n is null', $field->getModel()->getTableName(), $field->getName()); $pk = $field->getModel()->getPrimaryKey(); foreach ($result as $row) { if (!is_null($value = $field->getDefaultValue())) { } elseif (is_callable($field->getDefaultCallback())) { $value = call_user_func($field->getDefaultCallback(), $row); } else { throw new Exception("Unable to set default value for field '" . $field->getName() . "'"); } PerfORMController::getConnection()->query('update %n set %n = %' . $field->getType() . ' where %n = %i', $field->getModel()->getTableName(), $field->getName(), $value, $pk, $row->{$pk}); } PerfORMController::getBuilder()->changeFieldsNullable($field); $this->updateFieldSync($field); }