sql >> Base de Datos >  >> RDS >> Mysql

Modelo de configuración global de Laravel

Podría crear un proveedor de servicios, digamos SettingsServiceProvider , que carga todas las configuraciones de la base de datos y luego las almacena en caché. Luego, en cargas de página subsiguientes, podría devolver valores de configuración almacenados en caché en lugar de consultar la base de datos, lo que debería preocuparle legítimamente.

Algo tan simple como:

class SettingsServiceProvider extends ServiceProvider
{
    /**
     * Register the application services.
     *
     * @return void
     */
    public function register()
    {
        $this->app->singleton('settings', function ($app) {
            return $app['cache']->remember('site.settings', 60, function () {
                return Setting::pluck('value', 'key')->toArray();
            });
        });
    }
}

Suponiendo que su modelo de configuración se llame Setting según las convenciones de nomenclatura de Laravel. A continuación, puede acceder a la configuración de esta manera:

<h1>{{ array_get(app('settings'), 'site.name') }}</h1>

Si quisiera una forma más bonita de acceder a la configuración, podría crear una función auxiliar:

function setting($key)
{
    return array_get(app('settings'), $key);
}

Lo que haría un uso como este:

<h1>{{ setting('site.name') }}</h1>

Casi emulando el config() uso de la función auxiliar.