首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用查询/结果缓存进行Doctrine查找( doctrine _table->find,->findby* )(doctrine 1.2)

如何使用查询/结果缓存进行Doctrine查找( doctrine _table->find,->findby* )(doctrine 1.2)
EN

Stack Overflow用户
提问于 2012-10-10 18:48:29
回答 1查看 736关注 0票数 0

通过应用以下代码,我第一次在doctrine 1.24中设置了一个结果缓存:

代码语言:javascript
复制
$servers = array(
  'host'       => 'localhost',
  'port'       => 11211,
  'persistent' => true
);
$cacheDriver = new Doctrine_Cache_Memcache(
  array(
    'servers' => $servers,
    'compression' => false
  )
);
$manager->setAttribute(Doctrine::ATTR_RESULT_CACHE,$cacheDriver);
$manager->setAttribute(Doctrine::ATTR_RESULT_CACHE_LIFESPAN, 3600 );

这对于缓存DQL查询非常有用,例如:

代码语言:javascript
复制
enter code here$q = Doctrine_Query::create()
    ->from('Software s')
    ->leftJoin('s.Files f')
    ->useResultCache();
$q->execute();

但是,我感兴趣的是如何缓存表查找,例如:

代码语言:javascript
复制
xyzTable::getInstance()->findOneBySufff($stuff);

到目前为止,这些在我的应用程序代码中要频繁得多。我该如何实现这一点?此外,如果有人对memcache的1.2原理有一个使用指南,我会很高兴。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-16 02:58:17

您必须实现

代码语言:javascript
复制
xyzTable::getInstance()->findOneBySufff($stuff);

函数在您自己的xyzTable类中。

代码语言:javascript
复制
class xyzTable extends Doctrine_Table 
{
     public function findOneByStuff($stuff) {
         return $this->createQuery('x')
              ->select('x.*')
              ->where('x.stuff = ?', $stuff)
              ->useResultCache()
              ->fetchOne();

     }
}

请确保在‘enable cli’脚本中启用了表创建

代码语言:javascript
复制
 ....
 $doctrine_config['generate_models_options'] = 
    array('generateTableClasses' => true);

 $cli = new Doctrine_Cli($doctrine_config);
 ....
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12817559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档