数据库更新后如何清除缓存?

How to clear cache after database updates?

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

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

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

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

例如,我有用户、类别、帖子、访客 table。 如果类别和帖子 tables 更新缓存必须清除。但我不能说清楚。我可以为此编写清晰的代码吗?任何想法都会很好。提前致谢。

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

在 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 事件时,都会调用命令 :)