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

时间:2019-04-11 08:27:16

标签: mysql database laravel caching artisan

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

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

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

但这不是实现此目的的好方法。我让观察员这样做。但这也在重复。

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

1 个答案:

答案 0 :(得分:1)

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

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

`

特征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; }

每次在用户模型上触发update事件时,命令将被调用:)