CodeIgniter-插入查询的活动记录缓存


CodeIgniter - Active Record Caching for an insert query

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

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

为了最大限度地降低代码错误和数据泄露的风险,我研究了使用活动记录缓存自动将标准"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、haven、order_by、set。

查看active_record类"DB_active_rec.php",可以看到在几种方法中提供缓存的代码(select、where等)。

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

据我所知,这似乎是集合方法中缺少的。

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

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