$finder->where('Title', 'bar')->findOne(); // write cache 2 $SQL1 = $finder->getLatestQuery(); $finder->where('Title', 'foo')->findOne(); // read cache 1 $SQL2 = $finder->getLatestQuery(); $t->is($SQL1, $SQL2, 'The same query asked within the lifetime uses the cache'); sleep(2); $finder->where('Title', 'foo')->findOne(); // re-write cache 1 $SQL3 = $finder->getLatestQuery(); $t->isnt($SQL1, $SQL3, 'The same query asked after the lifetime does not use the cache'); */ $t->diag('Cached results'); $cache->clear(); ArticlePeer::doDeleteAll(); $article1 = new Article(); $article1->setTitle('foo1'); $article1->save(); $article2 = new Article(); $article2->setTitle('foo2'); $article2->save(); $finder = DbFinder::from('Article')->useCache($cache, 10); $finder->where('Title', 'foo1')->findOne(); // normal query $article = $finder->where('Title', 'foo1')->findOne(); // cached query $t->isa_ok($article, 'Article', 'Cached finder queries return Model objects'); $t->is($article->getId(), $article1->getId(), 'find() finder queries can be cached'); $finder->where('Title', 'foo1')->count(); // normal query $nb = $finder->where('Title', 'foo1')->count(); // cached query $t->is($nb, 1, 'count() finder queries can be cached');