2012-10-10 3 views
0

를 사용Doctrine_table- 같은 교리 조회를 만드는 방법> 찾기 -> findby * 나는 다음과 같은 코드를 적용하여 교리 1.24의 결과 캐시를 설정 한 처음 쿼리/결과 캐시 (교리 1.2)

xyzTable::getInstance()->findOneBySufff($stuff); 
0,123,516 :

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

그러나 무엇 관심 날 것은 내가 같은 테이블 조회를 캐시 할 방법은 다음과 같습니다

$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의 첩 위대한 작품

이것은 내 응용 프로그램 코드에서 훨씬 더 자주 발생합니다. 어떻게해야합니까? 또한 교리 1.2에서 memcache를 사용하기위한 안내서가 있으면 더 행복 할 것입니다.

답변

1

당신은 당신의 자신의 xyzTable 클래스의

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

기능을 구현해야합니다.

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

    } 
} 

당신이 당신의 '교리 CLI'스크립트에서 테이블 만들 수 있도록해야합니다

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

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