刷新或重置codeigniter活动记录,而不是在构建后执行?

时间:2013-03-20 04:23:28

标签: codeigniter activerecord

实际上我在stackoverflow本身看到了一些建议,但没有得到这个问题的确切解决方案,请不要认为这是重复的。

我使用memcache为我的codeigniter网站和活动记录来构建查询。 我在用

    this->db->return_query_string();

在执行之前从活动记录中获取查询。现在我想刷新活动记录而不执行相同的查询。

也来自各种参考文献

     $this->db->start_cache();
     $this->db->stop_cache();
     $this->db->flush_cache()

可能做的就是这是确切的结果吗?如果是这样,我如何获得没有执行

的缓存查询

2 个答案:

答案 0 :(得分:5)

您可以根据自己的要求使用这两个功能

public function _compile_select($select_override = FALSE)
public function _reset_select()

要使用它们,您必须删除公共或私人关键字 转到system / database / DB_active_rec.php从这些函数中删除public或protected关键字

使用示例

$this->db->select('trans_id');
$this->db->from('myTable');
$this->db->where('code','B');
$subQuery = $this->db->_compile_select();

$this->db->_reset_select();

$ subQuery包含查询字符串,_reset_select重置活动记录,以便您可以编写新查询。

答案 1 :(得分:3)

从CodeIgniter 3.x开始,你可以这样做:

$subQuery = $this->db
    ->select('trans_id')
    ->where('code', 'B')
    ->get_compiled_select('myTable');