dongzhiju0324 2017-01-24 18:26
浏览 39
已采纳

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

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.

  • 写回答

1条回答 默认 最新

  • dongliangkeng1056 2017-01-24 18:38
    关注

    There are multiple ways you can accomplish this, here are two options that come to mind.

    Option 1: preload

    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.

    Option 2: query as-needed

    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.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?