У меня есть таблица: настройки с моделью
class Setting extends Model { protected $fillable = [ 'name', 'value', ]; }
Я создал службу, предоставляющую SettingsServiceProvider
и зарегистрированную в 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() { } }
После добавления name
и value
в settings
таблицы я вызываю его в виде следующим образом:
{{ config('settings.sitename') }}
Где sitename
– это поле name
которое отлично возвращает значение.
Проблема . Проблема с этим методом заключается в том, что каждый запрос страницы вызывает вызов БД. И поскольку эти настройки не предназначены для частого изменения, поэтому я искал метод кэширования его в кеше laravel.
Я попробовал следующее:
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() { // } }
Но когда я пытаюсь вернуть его к виду следующим образом:
{{ config('settings.sitename') }}
ничто не возвращается.
У меня недостаточно репутации, чтобы комментировать пост, но это должно решить его
Заменить:
return $settings->pluck('name', 'value')->all();
С:
return $settings->pluck('value', 'name')->all();
а затем с обычным:
php artisan config:clear php artisan cache:clear
В командной строке просто введите
php artisan
ИЛИ
php artisan list
Он дает список команд с Объяснением, которые помогают u lot
Спасибо.