如何进行Doctrine_table->查找, - > findby *之类的Doctrine查找使用查询/结果缓存(doctrine 1.2)

时间:2012-10-10 10:48:29

标签: php doctrine doctrine-1.2

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

$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 quires,例如:

enter code here$q = Doctrine_Query::create()
    ->from('Software s')
    ->leftJoin('s.Files f')
    ->useResultCache();
$q->execute();

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

xyzTable::getInstance()->findOneBySufff($stuff);

这些在我的应用程序代码中更常见。 我该如何实现这一目标? 此外,如果有人有一个使用doccine 1.2的memcache的指南,我会更高兴。

1 个答案:

答案 0 :(得分:1)

您必须实施

xyzTable::getInstance()->findOneBySufff($stuff);

在您自己的xyzTable类中运行。

class xyzTable extends Doctrine_Table 
{
     public function findOneByStuff($stuff) {
         return $this->createQuery('x')
              ->select('x.*')
              ->where('x.stuff = ?', $stuff)
              ->useResultCache()
              ->fetchOne();

     }
}

确保在“doctrine-cli”脚本中启用表格创建

 ....
 $doctrine_config['generate_models_options'] = 
    array('generateTableClasses' => true);

 $cli = new Doctrine_Cli($doctrine_config);
 ....