Tengo una mesa: configuración con el modelo Setting
class Setting extends Model { protected $fillable = [ 'name', 'value', ]; } Creé un servicio que proporciona SettingsServiceProvider y me registré en app.php
class SettingsServiceProvider extends ServiceProvider { /** * Bootstrap the application services. * * @return void */ public function boot(Factory $cache, Setting $settings) { if (\Schema::hasTable('settings')) { config()->set('settings', Setting::pluck('value', 'name')->all()); } } /** * Register the application services. * * @return void */ public function register() { } } Después de agregar el name y el value a la settings de la tabla, lo llamo en la vista de esta manera:
{{ config('settings.sitename') }} Donde sitename es el campo de name que devuelve el valor perfectamente.
Problema: el problema con este método es que con cada solicitud de página se realiza una llamada a la base de datos. Y como estas configuraciones no deben cambiarse con frecuencia, estaba buscando un método para almacenarlas en caché en el caché de laravel.
Intenté lo siguiente:
class SettingsServiceProvider extends ServiceProvider { /** * Bootstrap the application services. * * @return void */ public function boot(Factory $cache, Setting $settings) { $settings = $cache->remember('settings', 60, function() use ($settings) { return $settings->pluck('name', 'value')->all(); }); config()->set('settings', $settings); /* if (\Schema::hasTable('settings')) { config()->set('settings', Setting::pluck('value', 'name')->all()); } */ } /** * Register the application services. * * @return void */ public function register() { // } }Pero cuando trato de devolverlo a la vista de esta manera:
{{ config('settings.sitename') }}nada se vuelve.
No tengo suficiente reputación para comentar en la publicación, pero esto debería resolverlo.
Reemplazar:
return $settings->pluck('name', 'value')->all();Con:
return $settings->pluck('value', 'name')->all();y luego con lo de siempre:
php artisan config:clear php artisan cache:clearEn el símbolo del sistema, simplemente escriba
php artisanO
php artisan listDa una lista de comandos con una explicación que te ayuda mucho.
Gracias.