sql >> Databáze >  >> RDS >> Mysql

Model globálního nastavení Laravel

Můžete vytvořit poskytovatele služeb, řekněte SettingsServiceProvider , který načte všechna nastavení z databáze a poté je uloží do mezipaměti. Potom při dalším načtení stránky může vrátit hodnoty nastavení uložené v mezipaměti, místo aby se dotazoval na databázi, což by vás mělo právem znepokojovat.

Něco tak jednoduchého jako:

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

Za předpokladu, že se váš model nastavení nazývá Setting podle Laravelových konvencí pojmenování. Poté můžete přistupovat k nastavení takto:

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

Pokud byste chtěli hezčí způsob přístupu k nastavení, můžete vytvořit pomocnou funkci:

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

Což by znamenalo použití takto:

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

Téměř emuluje config() použití pomocné funkce.



  1. MySQL:Kód chyby:1242 Poddotaz vrací více než 1 řádek

  2. Mysql objednávejte položky do nejnovějšího ze 2 dat

  3. Návrh databáze pro vícejazyčné aplikace

  4. ORA-24408:Nelze vygenerovat jedinečný název skupiny serverů