sql >> Databasteknik >  >> RDS >> Mysql

Laravel Global Settings Model

Du kan skapa en tjänsteleverantör, säg SettingsServiceProvider , som laddar alla inställningar från databasen och sedan cachar dem. Vid efterföljande sidladdningar kan den returnera cachade inställningsvärden snarare än att fråga databasen, vilket du med rätta bör vara orolig över.

Något så enkelt som:

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();
            });
        });
    }
}

Förutsatt att din inställningsmodell heter Setting enligt Laravels namnkonventioner. Du kan sedan komma åt inställningar som så:

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

Om du ville ha ett snyggare sätt att komma åt inställningarna kan du skapa en hjälpfunktion:

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

Vilket skulle göra användningen så här:

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

Emulerar nästan config() hjälpfunktionens användning.



  1. MySQL Ta bort efterföljande radbrytningar från en kolumn

  2. Rails validerar unika misslyckanden på samtidiga ingångar

  3. Jämför Amazon RDS Point-in-Time Recovery med ClusterControl

  4. SQL-sökning i flera värden i samma fält