Как очистить кэш после обновления базы данных?

#mysql #database #laravel #caching #laravel-artisan

#mysql #База данных #laravel #кэширование #laravel-artisan

Вопрос:

Я пытаюсь очистить кеш после некоторых обновлений таблицы.

В функции хранилища контроллера я добавляю

 Artisan::call('cache:clear');
  

Но это не очень хороший способ сделать это. Я заставил наблюдателей сделать это. Но это тоже повторяется.

Например, у меня есть таблица пользователей, категорий, сообщений, посетителей. Если таблицы категорий и сообщений обновляются, кэш должен быть очищен. Но я не могу сделать это четко. Могу ли я написать понятный код для этого? Любая идея была бы хорошей. Заранее спасибо.

Ответ №1:

Вот один пример чистого кода:

Создайте файл в app/Traits/CacheClear.php , и поместите этот код:

 namespace AppTraits;

trait CacheClear
{

    /**
     * Boot function for Laravel model events.
     * https://laravel.com/docs/5.8/eloquent#events
     *
     * @return void
     */
    protected static function boot()
    {
        parent::boot();

        /**
         * After model is created, or whatever action, clear cache.
         */
        static::updated(function () {
            Artisan::call('cache:clear');
        });
    }

  

Теперь, на всякий случай, запустите composer dump-autoload .

После этого перейдите к своей модели и используйте признак,

use AppTraitsCacheClear;

class User extends Model {
use CacheClear;
}

Каждый раз, когда вы запускаете update событие в пользовательской модели, будет вызываться команда 🙂

Комментарии:

1. По какой-то странной причине форматирование кода в стеке искажается, вот как это должно выглядеть: imgur.com/e7sy7hK

2. Это будет работать как шарм. Пытаюсь как можно скорее. Спасибо 🙂