2014-02-11 50 views
0

我緩存我的分頁使用此代碼從laravel刪除分頁緩存4

Album::remember(3)->paginate(20); 

但我不知道如何從分頁到期時間之前刪除緩存。有人可以請幫助。

回答

1

不能正常地「忘記」一個數據庫緩存,因爲你需要知道作爲密鑰的哈希值。

你可以檢索使用getCacheKey()方法(它definted這樣):

/** 
* Get a unique cache key for the complete query. 
* 
* @return string 
*/ 
public function getCacheKey() 
{ 
    return $this->cacheKey ?: $this->generateCacheKey(); 
} 

喜歡的東西

$results = Album::remember(3)->paginate(20); 
$key = Album::getCacheKey(); 
Cache::forget($key); 

可以工作,但我承認我從來沒有使用過這個程序,我傾向於給remember()方法分配一個自定義密鑰並用它來忘記它:

Album::remember(3, 'pagination')->paginate(20); 
Cache::forget('pagination'); 
+0

當使用相冊: :記(3, '分頁') - > PAGINATE(20)返回空數據。在哪裏,如果我刪除自定義鍵,然後返回全套資料。有沒有修復? – sonill

+0

嗯,它與工作 - > get()方法,而不是 - > PAGINATE()(我曾在與過去的問題)?你嘗試過getCacheKey()方法嗎?如果您使用的是文件或數據庫其他驅動程序,你可以使用'tags'的緩存並刷新他們 –