【问题标题】:How to clear cache after database updates?数据库更新后如何清除缓存?
【发布时间】:2019-09-01 19:43:39
【问题描述】:

我正在尝试在一些表更新后清除缓存。

在控制器的存储功能中我正在添加

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

但这不是一个好方法。我让观察者来做这件事。但这也在重演。

例如,我有用户、类别、帖子、访问者表。 如果更新类别和帖子表,则必须清除缓存。但我无法清楚地说明这一点。我可以为此编写清晰的代码吗?任何想法都会很好。提前致谢。

【问题讨论】:

    标签: mysql database laravel caching laravel-artisan


    【解决方案1】:

    这是一个清晰的代码示例:

    在 app/Traits/CacheClear.php 中创建文件,并放入以下代码:

    namespace App\Traits;
    
    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 App\Traits\CacheClear;

    class User extends Model { use CacheClear; }

    每次在 User 模型上触​​发 update 事件时,都会调用命令 :)

    【讨论】:

    • 由于某种奇怪的原因,堆栈上的代码格式混乱了,它应该是这样的:imgur.com/e7sy7hK
    • 这就像一个魅力。尽快尝试。谢谢:)
    猜你喜欢
    • 2012-12-16
    • 2021-07-14
    • 2013-01-09
    • 1970-01-01
    • 2018-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多