Intereting Posts
Как вы могли бы забыть кешированные модели Eloquent в Laravel? Выполнить анализ SOAP-ответа с помощью PHP? Использование C для вычисления в приложении PHP: стоит ли это? c # Ури не может иметь звездочку в доменном имени, но Java и php могут? Извлечение совпадений из php regex Попытка сохранить изображение base64 с помощью imagecreatefromstring и полностью черная Как опубликовать несколько фотографий через API Facebook Изменение иностранных символов в их нормальный эквивалент Не допускайте, чтобы Propel вставлял пустые строки php Как получить значения из проблемы var? file_exists () слишком медленный в PHP. Может ли кто-нибудь предложить более быструю альтернативу? Структура папки для проекта PHP как обнаружить заблокированный адрес из php Использование $ _POST для получения значения опции выбора из HTML Являются ли массивы неявно созданы в PHP, когда одному из его ключей присваивается что-то?

Значения таблицы кэша глобально в laravel

У меня есть таблица: настройки с моделью

 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') }} 

ничто не возвращается.

Related of "Значения таблицы кэша глобально в laravel"

У меня недостаточно репутации, чтобы комментировать пост, но это должно решить его

Заменить:

 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

введите описание изображения здесь

Спасибо.