文档bug [ 求助交流 ]
http://www.yiichina.com/doc/guide/2.0/caching-data
文档最下边的查询缓存纯粹是扯蛋!完完全全错误的东西,误导人!
查询缓存
查询缓存是一个建立在数据缓存之上的特殊缓存特性。它用于缓存数据库查询的结果。
查询缓存需要一个 yii\db\Connection 和一个有效的 cache 应用组件。查询缓存的基本用法如下,假设 $db 是一个 yii\db\Connection 实例:
$duration = 60; // 缓存查询结果60秒
$dependency = ...; // 可选的缓存依赖
$db->beginCache($duration, $dependency);
// ...这儿执行数据库查询...
$db->endCache();
如你所见,beginCache() 和 endCache() 中间的任何查询结果都会被缓存起来。如果缓存中找到了同样查询的结果,则查询会被跳过,直接从缓存中提取结果。
查询缓存可以用于 ActiveRecord 和 DAO。
上边是yiichina的有关查询缓存的文档内容,经实践,db类根本就不能调用beginCache
和endCache
。下边的是官方正确的文档内容。
Query Caching Query caching is a special caching feature built on top of data caching. It is provided to cache the result of database queries.
Query caching requires a DB connection and a valid cache application component. The basic usage of query caching is as follows, assuming $db is a yii\db\Connection instance:
$result = $db->cache(function ($db) {
// the result of the SQL query will be served from the cache
// if query caching is enabled and the query result is found in the cache
return $db->createCommand('SELECT * FROM customer WHERE id=1')->queryOne();
});
Query caching can be used for DAO as well as ActiveRecord:
$result = Customer::getDb()->cache(function ($db) {
return Customer::find()->where(['id' => 1])->one();
});
原连接http://www.yiiframework.com/doc-2.0/guide-caching-data.html,完全不一样,亲测官方文档才是正确的。
共 5 条回复
yidashi
最后登录:2018-11-07
在线时长:86小时19分
- 粉丝77
- 金钱10060
- 威望240
- 积分13320