在Laravel 4中使用具有雄辩关系的缓存标记

时间:2016-09-20 09:36:43

标签: php laravel caching laravel-4 redis

我需要将redis缓存标记添加到雄辩的模型关系中,例如:

 public function children() {
     return $this->belongsToMany('table1', 'table2', 'field1', 'field2')->where('field3', 'value')->orderBy('field1', 'asc')->remember(720);
 }

但我目前无法在不等待它过期的情况下清除此缓存。我知道可能有一种方法可以为它添加一个缓存名称,可以使用Cache :: forget($ name)清除它,但我想像许多其他条目一样添加相同的缓存标记。

由于

1 个答案:

答案 0 :(得分:0)

如果您想使用Redi的标签,请从缓存方法中删除关系方法:

public function children() {
     return $this->belongsToMany('table1', 'table2', 'field1', 'field2')->where('field3', 'value')->orderBy('field1', 'asc')->remember(720);
}

public function getChildren() {
     return Cache::tags(['tag1', 'teg2])->rememberForever('cacheKey', function() {
        return $this->children()->get();
    })
}

然后如果你想清除它,请使用Redis的标签选项,如下所示:

Cache::tags('tag1')->flush();