1

我目前正在尝试创建一个相当基本的网络应用程序,它有可能为用户及其组织保存敏感(ish)数据。

我原本打算将所有用户输入的记录数据存储在一个数据库中,并将所有应用程序数据存储在另一个数据库中。这些数据将存储在一个共享数据库中,其中 user_id 和 org_id 针对所有表中的所有记录,以方便分离。

为了最大限度地降低代码错误和数据泄露的风险,我研究了使用Active Record 缓存自动将标准“where”语句附加到我的活动记录查询的能力

$this->db->start_cache();
$this->db->where('user_id',$_SESSION['user_id']);
$this->db->where('org_id',$_SESSION['org_id']);
$this->db->stop_cache();

这太棒了,可以省去很多麻烦。但是,根据文档 http://codeigniter.com/user_guide/database/active_record.html#caching我也应该能够将其用于更新(设置方法):

注意:可以缓存以下语句:select、from、join、where、like、group_by、have、order_by、set。

查看 active_record 类“DB_active_rec.php”,存在代码以在几种方法(选择、位置等)中提供缓存。

if ($this->ar_caching === TRUE)
{
...do caching stuff

据我所知,这似乎从 set 方法中丢失了。

我不确定我想要什么答案,但希望是我做错了!

4

1 回答 1

1

您不能缓存更新语句。这没有多大意义。在您的更新中,您使用该$this->db->where()方法,它本质上是一个选择。该部分可以被缓存,这样做可以为自己节省一条选择语句。

于 2012-07-10T11:57:20.943 回答