public function getEnum($columns)
{
$enum = [];
foreach ($columns as $column) {
if (!$this->isEnum($column)) {
continue;
}
$column_camel_name = str_replace(' ', '', ucwords(implode(' ', explode('_', $column->name))));
$enum[$column->name]['func_opts_name'] = 'opts' . $column_camel_name;
$enum[$column->name]['func_get_label_name'] = 'get' . $column_camel_name . 'ValueLabel';
$enum[$column->name]['values'] = [];
$enum_values = explode(',', substr($column->dbType, 4, strlen($column->dbType) - 1));
foreach ($enum_values as $value) {
$value = trim($value, "()'");
$const_name = strtoupper($column->name . '_' . $value);
$const_name = preg_replace('/\\s+/', '_', $const_name);
$const_name = str_replace(['-', '_', ' '], '_', $const_name);
$const_name = preg_replace('/[^A-Z0-9_]/', '', $const_name);
$label = ucwords(trim(strtolower(str_replace(['-', '_'], ' ', preg_replace('/(?<![A-Z])[A-Z]/', ' \\0', $value)))));
$label = preg_replace('/\\s+/', ' ', $label);
$enum[$column->name]['values'][] = ['value' => $value, 'const_name' => $const_name, 'label' => $label];
}
}
return $enum;
}