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);
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;
}