Microweber\Utils\Database::get_fields PHP Method

get_fields() public method

Gets all field names from a DB table.
Author: Peter Ivanov
public get_fields ( $table ) : array
$table string - table name
return array
    public function get_fields($table)
    {
        static $ex_fields_static;
        if (isset($ex_fields_static[$table])) {
            return $ex_fields_static[$table];
        }
        $expiresAt = 300;
        $cache_group = 'db/fields';
        if (!$table) {
            return false;
        }
        $key = 'mw_db_get_fields_' . crc32($table);
        $hash = $table;
        $value = $this->app->cache_manager->get($key, 'db', $expiresAt);
        if (isset($value[$hash])) {
            return $value[$hash];
        }
        $fields = DB::connection()->getSchemaBuilder()->getColumnListing($table);
        // TODO: Temp fix for Laravel
        if (count($fields) && !is_string($fields[0]) && (isset($fields[0]->name) or isset($fields[0]->column_name))) {
            $fields = array_map(function ($f) {
                if (isset($f->column_name)) {
                    return $f->column_name;
                } else {
                    return $f->name;
                }
            }, $fields);
        }
        // Caching
        $ex_fields_static[$table] = $fields;
        $value[$hash] = $fields;
        $this->app->cache_manager->save($value, $key, $cache_group);
        return $fields;
    }