/** * Cast default value based on column type. Required to prevent conflicts when not nullable * column added to existed table with data in. * * @param AbstractColumn $column * @return bool|float|int|mixed|string */ private function castDefault(AbstractColumn $column) { if ($column->abstractType() == 'timestamp' || $column->abstractType() == 'datetime') { $driver = $this->tableSchema->driver(); return $driver::DEFAULT_DATETIME; } if ($column->abstractType() == 'enum') { //We can use first enum value as default return $column->getEnumValues()[0]; } if ($column->abstractType() == 'json') { return '{}'; } switch ($column->phpType()) { case 'int': return 0; break; case 'float': return 0.0; break; case 'bool': return false; break; } return ''; }