我有這樣的查詢:得到保存記錄的Yii DB緩存ID緩存表
$record=books::model()->cache(10000)->find('id=:id',array(":id"=>$id));
Yii中使用CDbCache的結果保存在緩存表
id expire value
-- ------ ------
我的問題是:
如何獲得緩存記錄的id - 這個id是由yii生成的 - in yii cache table?
我有這樣的查詢:得到保存記錄的Yii DB緩存ID緩存表
$record=books::model()->cache(10000)->find('id=:id',array(":id"=>$id));
Yii中使用CDbCache的結果保存在緩存表
id expire value
-- ------ ------
我的問題是:
如何獲得緩存記錄的id - 這個id是由yii生成的 - in yii cache table?
沒有公開的方法來獲取緩存ID,因爲它包含了很多變量,如果你真的想要,但它在Yii深處真的黑暗下來。
回答基於評論:
你總是可以設置一個最後的緩存時間對你的記錄,然後你可以用它來計算剩餘時間。但是,這不會持續頁面跨度,因爲您的緩存結果,它不會再讀取。所以,你的選擇是:
回答這個問題。順便說一句,Yii代碼的編寫,你不能得到YII內部產生的緩存的ID /密鑰。 如果你看看源代碼
https://github.com/yiisoft/yii/blob/1.1.16/framework/db/CDbCommand.php 方法queryInternal
你會意識到cacheKey生成是複雜的事情。此外,這種cacheKey將進一步通過MD5
被散列參見:http://www.yiiframework.com/doc/api/1.1/CCache#generateUniqueKey-detail
如果您正在使用「高速緩存」作爲的QueryBuilder的一部分,那麼我們給權力的Yii通過提供管理這個緩存過期持續時間和依賴性查詢。
如果你想在命令/的到期期限,並希望有ID控制,那麼唯一的方法就是手動設置CacheID用戶的建議 Paystey爲belowt:
$dbResult = Yii::app()->cache->get('YOUR-KNOWN-KEY');
if($dbResult === false){
$dbResult = YOUR-QUERY;
Yii::app()->cache->set('YOUR-KNOWN-KEY, $dbResult);
}
謝謝你但我認爲這與我的問題無關。如何在查詢中的緩存表中獲取已保存記錄的ID。這是我的問題。? – shayan 2012-08-17 10:10:16
我認爲你的意思是找到身份證,這樣你就可以刪除記錄,這就是它的作用。你爲什麼需要這個ID? Yii如何生成這些ID存在邏輯,但依賴這些數據是正確的或甚至存在是非常危險的。 – Paystey 2012-08-17 10:11:41
我想知道緩存何時到期並使用剩餘時間到期。 – shayan 2012-08-17 10:14:38