And*_*ndy 3 cakephp cakephp-3.0
在CakePHP 3.x的(令人难以置信的混乱)文档中,它根据新的ORM升级指南提供了以下内容:
您可以使用迭代器修饰查询并调用方法,甚至无需触及数据库.当您缓存部分视图并且实际上不需要从数据库中获取结果时,这非常有用:
// No queries made in this example!
$results = $articles->find()
->order(['title' => 'DESC'])
->formatResults(function (\Cake\Collection\CollectionInterface $results) {
return $results->extract('title');
});
Run Code Online (Sandbox Code Playgroud)
为什么你有上面的代码在所有,如果"已经从数据库中实际上是不需要考虑的结果"?
您必须在嵌入的上下文中读取它,整个部分是关于" 调用find
表不会立即返回结果,但将返回Query对象 ",以及在什么情况下可能有用.
查询对象不自动生成并运行SQL,他们只能做这么明确地调用如特定方法时toArray()
,all()
,收集方法等,或者在迭代的对象.
所描述的情况是,最终正在执行查询对象的代码部分,即正在构建和运行的实际SQL查询,已被缓存(例如视图模板),以便在后续运行时再次运行查询请求将毫无意义,只会产生不必要的开销,因为您已经有缓存的结果.
也可以看看
归档时间: |
|
查看次数: |
87 次 |
最近记录: |