#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. Это будет работать как шарм. Пытаюсь как можно скорее. Спасибо 🙂