我看到这对笨论坛
考虑以下代码
UPDATE a INNER JOIN b USING (id) SET a.firstname='Pekka', a.lastname='Kuronen', b.companyname='Suomi Oy',b.companyaddress='Mannerheimtie 123, Helsinki Suomi' WHERE a.id=1;
这显然是您在Codeigniter中这样做的方式
$this->db->set('a.firstname', 'Pekka'); $this->db->set('a.lastname', 'Kuronen'); $this->db->set('b.companyname', 'Suomi Oy'); $this->db->set('b.companyaddress', 'Mannerheimtie 123, Helsinki Suomi'); $this->db->where('a.id', 1); $this->db->join('table2 as b', 'a.id = b.id'); $this->db->update('table as a');
实际上这是行不通的。我看了一下生成的SQL,结果甚至没有提到联接。
有谁知道如何使用Codeigniter的Active Record数据库类对联接进行更新?
我发现的一种解决方案是完全删除联接并将联接条件移到“ where”函数中,此外,您还需要更改更新字符串以包括新表。
$this->db->set('a.firstname', 'Pekka'); $this->db->set('a.lastname', 'Kuronen'); $this->db->set('b.companyname', 'Suomi Oy'); $this->db->set('b.companyaddress', 'Mannerheimtie 123, Helsinki Suomi'); $this->db->where('a.id', 1); $this->db->where('a.id = b.id'); $this->db->update('table as a, table2 as b');