How to retrieve global settings from database table ? I know how to create global settings in array like this: path:
app/config/settings.php
<?php
return array(
'admin_email' =>'mail@shabeebk.com',
'admin_name' =>'Admin',
);
and in controller:
$cvalue = Config::get('settings.admin_name');
I'd like to achive the same effect but this time data receive from table settings
$data = Settings::get();
return as array and have globally acces to them.
There are multiple ways you can accomplish this, here are two options that come to mind.
In a ServiceProvider boot()
method (maybe your AppServiceProvider
) you could easily load up all DB settings into config:
Settings::get()->each(function($setting) {
// Assumes the columns in your DB are 'key' and 'value'
Config::set('settings.' . $setting->key, $setting->value);
});
Now you can just grab Config::get('settings.foo')
globally.
Or you could write a get()
method on your Settings model that provides similar behavior:
public static function get($key, $default = null)
{
if($match = self::where('key', $key)->first()) {
return $match->value;
}
return $default;
}
Now you can use Settings::get('foo')
globally.