如何使用 Join 从多个表中删除 select 行 - CodeIgniter

How to Delete select rows from multiple tables using Join - CodeIgniter

我有三个 table,如果其中一个 table 中的给定条件为真,我希望能够从中删除 select 行。我正在使用 codeigniter。

我的 Table 名称是:Register、Profiles 和 Profilesmember。所有 3 table 都有我想加入的“电子邮件”列。一个 table“注册”有一个独特的列“is_email_verfiied”——要么是“是”要么是“否”。如果它是“否”,我想从 table“register”中删除该列以及其他两个 tables“Profiles”和“Profilesmember”之一,具体取决于哪个包含匹配的整体'email' 列。

这是我的模型:

    function databaseupdate ()
        {
        $verified = 'no';
        $tables = array('register', 'profiles', 'profilesmember');
        $this->db->from ('register');
        $this->db->join('profiles', 'profiles.email = register.email');
        $this->db->join('profilesmember', 'profilesmember.email = register.email');
        $this->db->where('register.is_email_verified', $verified);
        $this->db->delete($tables);
}

它会从 table“注册”中删除正确的条目,但不会从第二个 table 个人资料成员或个人资料中删除。

我收到的错误信息是

"Unknown column 'register.is_email_verified' in 'where clause'".

我检查过,“is_email_verified”列拼写正确,当然确实存在于 table 寄存器中(为清楚起见,该列不存在于其他 2 tables).

最后一个 SQL 查询是

"DELETE FROM profiles WHERE register.is_email_verified = 'no' "

所以我改变了我的方法并摆脱了 JOIN 想法 - 这有效:

function databaseupdate ()
            {
            $verified = 'no';
            $tables = array('register', 'profiles', 'profilesmember');
            $this->db->select('email');
            $this->db->from('register');
            $this->db->where('is_email_verified', $verified);
            $query = $this->db->get(); 
            $email = $query->row()->email;
            $this->db->where('email', $email);
            $this->db->delete($tables);
            }