Example #1
0
 /**
  * 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);
 }