2017-01-24 8 views
0

データベーステーブルからグローバル設定を取得する方法は? 私はこのような配列でグローバル設定を作成する方法を知っている: パス:Laravel 5でグローバルにアクセスするためにデータベース配列からデータ設定を取得する方法

app/config/settings.php 

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

とコントローラで:

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

を、私は同じ効果をachiveしたいのですが、この時間データはテーブルから受け取ります

$data = Settings::get(); 

配列として返され、それらにグローバルにアクセスします。

答えて

1

これを達成するには複数の方法がありますが、ここでは2つの選択肢があります。

オプション1:プリロード

のServiceProvider boot()方法で(多分あなたのAppServiceProvider)あなたは簡単に設定にすべてのDBの設定を読み込むことができます:

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

関連する問題