schmunk42\giiant\generators\model\Generator::getEnum PHP Method

getEnum() public method

prepare ENUM field values.
public getEnum ( array $columns ) : array
$columns array
return array
    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;
    }