数据库更新后如何清除缓存?
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
事件时,都会调用命令 :)
我正在尝试在一些 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
事件时,都会调用命令 :)