愿所有的美好和期待都能如约而至

codeigniter - 数据库:如何使用单个更新查询更新多个表

发布时间:  来源:互联网  作者:匿名  标签:activerecord codeigniter database error codeigniter - database : how to update m  热度:37.5℃

本文介绍了codeigniter – 数据库:如何使用单个更新查询更新多个表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在 codeigniter 论坛上看到了这个

I saw this on the codeigniter forum

考虑下面的代码

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 is how you would apparently do it in 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,结果甚至没有提到连接.

this does not work in reality. I have had a look a the SQL which this produces and the results do not even mention the join.

有谁知道如何使用 Codeigniter 的 Active Record 数据库类通过连接进行更新?

推荐答案

我发现的一个解决方案是完全删除连接并将连接条件移动到 ‘where’ 函数中,您还需要将更新字符串更改为包括新表.

One solution I have found is to remove the join altogether and move the join condition into a ‘where’ function, also you will need to change the update string to include the new table.

$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');

这篇关于codeigniter – 数据库:如何使用单个更新查询更新多个表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,

勇敢去编程!

勇敢的热爱编程,未来的你一定会大放异彩,未来的生活一定会因编程更好!

TOP