Codeigniter数据库在一次删除后重置缓存查询

时间:2017-03-13 10:17:12

标签: php mysql codeigniter codeigniter-3

我有一个允许我删除表格上的行的函数。但问题是,对于数据库完整性,我必须删除另一个与我要删除的记录相关的表上的另一行。这是我的功能:

public function delete($tab)
    {
        $this->db->where('id', $tab['id']);
        $this->db->delete('agent', $tab); 
       // Here the query is "DELETE from agent WHERE id = $tab['id']"

        $this->db->where('id_agent', $tab['id']);
        $this->db->delete('agent_vendeuse', $tab);
// Here the query gives "Delete from agent_vendeuse WHERE id_agent= $tab['id'] AND id=$tab['id'];" Which is where the error comes from
    }

我的功能有错误数据库错误:

DELETE FROM `agent_vendeuse` WHERE `id_agent` = '2' AND `id` = '2'

这意味着在我影响了新索引' id_agent'对于where子句,前一个' id'仍在缓存中。

$ tab变量来自我表单的$ _POST。我只是在功能上更改了它的名字。

我想我必须在第一次删除后清理缓存但是如何编写它?

1 个答案:

答案 0 :(得分:1)

delete函数的第二个参数是where子句,所以我猜测可能会发生的行是$this->db->where('id', $tab['id']);在第一次delete()调用时被忽略,并且由于某种原因在第二个delete()调用你在参数中定义的'where子句',因为$ tab被忽略,而且两个where()调用被改为使用。

只需从传递给delete()的参数中删除$ tab,你应该没问题:

public function delete($tab)
{
    $this->db->where('id', $tab['id']);
    $this->db->delete('agent'); 

    $this->db->where('id_agent', $tab['id']);
    $this->db->delete('agent_vendeuse');
}