Contao\DcaExtractor::getDbInstallerArray PHP Method

getDbInstallerArray() public method

Return an array that can be used by the database installer
public getDbInstallerArray ( ) : array
return array The data array
    public function getDbInstallerArray()
    {
        $return = array();
        // Fields
        foreach ($this->arrFields as $k => $v) {
            if (is_array($v)) {
                if (!isset($v['name'])) {
                    $v['name'] = $k;
                }
                $return['SCHEMA_FIELDS'][$k] = $v;
            } else {
                $return['TABLE_FIELDS'][$k] = '`' . $k . '` ' . $v;
            }
        }
        $quote = function ($item) {
            return '`' . $item . '`';
        };
        // Keys
        foreach ($this->arrKeys as $k => $v) {
            // Handle multi-column indexes (see #5556)
            if (strpos($k, ',') !== false) {
                $f = array_map($quote, \StringUtil::trimsplit(',', $k));
                $k = str_replace(',', '_', $k);
            } else {
                $f = array($quote($k));
            }
            // Handle key lengths (see #221)
            if (preg_match('/\\([0-9]+\\)/', $v)) {
                list($v, $length) = explode('(', rtrim($v, ')'));
                $f = array($quote($k) . '(' . $length . ')');
            }
            if ($v == 'primary') {
                $k = 'PRIMARY';
                $v = 'PRIMARY KEY  (' . implode(', ', $f) . ')';
            } elseif ($v == 'index') {
                $v = 'KEY `' . $k . '` (' . implode(', ', $f) . ')';
            } else {
                $v = strtoupper($v) . ' KEY `' . $k . '` (' . implode(', ', $f) . ')';
            }
            $return['TABLE_CREATE_DEFINITIONS'][$k] = $v;
        }
        $return['TABLE_OPTIONS'] = '';
        // Options
        foreach ($this->arrMeta as $k => $v) {
            if ($k == 'engine') {
                $return['TABLE_OPTIONS'] .= ' ENGINE=' . $v;
            } elseif ($k == 'charset') {
                $return['TABLE_OPTIONS'] .= ' DEFAULT CHARSET=' . $v;
            }
        }
        return $return;
    }