2017-01-24 1 views
0

Как получить глобальные настройки из таблицы базы данных? Я знаю, как создать глобальные параметры в массиве, как это: путь:Как получить настройки данных из массива базы данных, чтобы глобально получить доступ к Laravel 5

app/config/settings.php 

<?php 
return array(
     'admin_email' =>'[email protected]', 
     'admin_name' =>'Admin', 
); 

и в контроллере:

$cvalue = Config::get('settings.admin_name'); 

я хотел для того чтобы достигнуть того же эффекта, но на этот раз данные получают из таблицы установки

$data = Settings::get(); 

возвращение как массив и глобально доступ к ним.

ответ

1

Существует несколько способов сделать это, вот два варианта, которые приходят на ум.

Вариант 1: преднагрузки

В методе ServiceProvider boot() (может быть, ваш AppServiceProvider) вы можете легко загрузить все настройки БД в конфиге:

Settings::get()->each(function($setting) { 
    // Assumes the columns in your DB are 'key' and 'value' 
    Config::set('settings.' . $setting->key, $setting->value); 
}); 

Теперь вы можете просто захватить Config::get('settings.foo') во всем мире.

Вариант 2: запрос по мере необходимости

Или вы могли бы написать метод get() на модели настройки, которая обеспечивает подобное поведение:

public static function get($key, $default = null) 
{ 
    if($match = self::where('key', $key)->first()) { 
     return $match->value; 
    } 

    return $default; 
} 

Теперь вы можете использовать Settings::get('foo') глобально.

+0

Оба ответа удовлетворительные. Большое спасибо. – Tomasz