如何缓存不使用query()函数的CI活动记录

时间:2014-07-17 12:36:55

标签: codeigniter caching activerecord

是的,我知道我可以缓存这样的查询

$CI->db->cache_on();
$query = $CI->db->query("select photo,gender from users where id=".$id);
$CI->db->cache_off();

但我需要这样的方式

$CI->db->cache_on();
$CI->db->select(array('photo','gender'))->from('users')->where('id',$id);
$CI->db->cache_off();
$row = $CI->db->get()->row_array();

我正在获取数据,但在cache/目录中没有创建任何内容。所以我认为它没有被缓存。 在第二种情况下,有人可以请求如何缓存吗?

更新

当我这样做时

 $CI->db->cache_on();
 $CI->db->select(array('photo','gender'))->from('users')->where('id',$id)->get();
 $CI->db->cache_off();
 $row = $CI->db->row_array();

PDO驱动程序说,row_array()是一个未定义的函数。

1 个答案:

答案 0 :(得分:0)

$CI->db->cache_on();
$CI->db->select(array('photo','gender'))->from('users')->where('id',$id);
$CI->db->cache_off();
$row = $CI->db->get()->row_array();

在调用get方法之前移动要调用的cache_off方法,就像这样

$CI->db->cache_on();
$query = $CI->db->select(array('photo','gender'))->from('users')->where('id',$id)->get();
$CI->db->cache_off();
$row = $query->row_array();

然后它就像你的手动查询一样工作:)

这样做是因为在您调用get方法之前查询不会运行,因此row_array不存在的原因