sql >> Database teknologi >  >> RDS >> Mysql

Laravel Global Settings Model

Du kan oprette en tjenesteudbyder, f.eks. SettingsServiceProvider , der indlæser alle indstillingerne fra databasen og derefter cacher dem. Så ved efterfølgende sideindlæsninger kan den returnere cachelagrede indstillingsværdier i stedet for at forespørge databasen, hvilket du med rette bør være bekymret over.

Noget så simpelt 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();
            });
        });
    }
}

Forudsat at din indstillingsmodel hedder Setting ifølge Laravels navnekonventioner. Du kan derefter få adgang til indstillinger som sådan:

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

Hvis du ville have en smukkere måde at få adgang til indstillinger på, kunne du oprette en hjælpefunktion:

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

Hvilket ville gøre brug som dette:

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

Næsten emulerer config() hjælpefunktionens brug.



  1. mysql CONCAT () AS navn?

  2. Har PL/SQL en tilsvarende StringTokenizer til Java?

  3. 4 måder at få information om en tabels struktur i SQLite

  4. Dataintegritet og præstationsovervejelser i MySQL semisynkron replikering