4

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

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

    this->db->return_query_string();

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

也来自各种参考

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

可能做的工作是这个确切的结果吗?如果是这样,我如何在不执行的情况下获取缓存的查询

4

2 回答 2

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 重置活动记录,以便您可以编写新查询。

于 2013-03-20T04:33:02.550 回答
3

从 CodeIgniter 3.x 开始,您可以:

$subQuery = $this->db
    ->select('trans_id')
    ->where('code', 'B')
    ->get_compiled_select('myTable');
于 2013-10-13T10:07:06.567 回答