sql >> Database >  >> RDS >> Mysql

Laravel Global Settings Model

U kunt een serviceprovider maken, bijvoorbeeld SettingsServiceProvider , dat alle instellingen uit de database laadt en vervolgens in de cache plaatst. Vervolgens kan het bij volgende pagina's laden, in de cache opgeslagen instellingswaarden retourneren in plaats van de database te doorzoeken, waar u zich terecht zorgen over zou moeten maken.

Iets eenvoudigs als:

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

Ervan uitgaande dat uw instellingenmodel Setting wordt genoemd volgens de naamgevingsconventies van Laravel. U kunt dan als volgt toegang krijgen tot de instellingen:

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

Als u een mooiere manier wilt om toegang te krijgen tot instellingen, kunt u een hulpfunctie maken:

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

Wat het gebruik als volgt zou maken:

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

Bijna emuleren van de config() gebruik van de helperfunctie.



  1. Heeft het zin om MySQL LIMIT 1 te gebruiken bij het opvragen van een geïndexeerd/uniek veld?

  2. Een Linked Server Login toevoegen in SQL Server (T-SQL-voorbeeld)

  3. Logische replicatiepartitionering met PostgreSQL 13

  4. PDO-verbindingsfout bij gebruik van symfony en MAMP