如何从数据库阵列中检索数据设置以在Laravel 5中进行全局访问

时间:2017-01-24 18:26:57

标签: php laravel laravel-5 laravel-5.3

如何从数据库表中检索全局设置? 我知道如何在数组中创建全局设置,如下所示: 路径:

app/config/settings.php

<?php
return array(
        'admin_email' =>'mail@shabeebk.com',
        'admin_name' =>'Admin',
);

并在控制器中:

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

我希望获得相同的效果,但这次数据是从表格设置中接收的

$data = Settings::get();

以数组形式返回并具有全局访问权限。

1 个答案:

答案 0 :(得分: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')