用户
 找回密码
 入住 CI 中国社区
搜索
查看: 2106|回复: 5
收起左侧

[已解决] Active Record 类 不支持联表更新?

[复制链接]
发表于 2012-11-24 05:07:53 | 显示全部楼层 |阅读模式
目标SQL:
SQL复制代码
UPDATE a LEFT JOIN b ON a.id=b.a_id SET a.title='aaaaa',b.body='bbbb' WHERE a.id=1  
复制代码


Active Record 类的使用:

PHP复制代码
$this->db->where('a.id',1);        
$this->db->join('b','a.id=b.a_id','left');
$this->db->set('a.title', 'aaaaa');
$this->db->set('b.body', 'bbbb');
$this->db->update('a');
               
复制代码


得到的SQL:
SQL复制代码
UPDATE `a` SET `a`.`title` = 'aaaaa', `b`.`body` = 'bbbb' WHERE `a`.`id` = 1
复制代码


Join部分就没有了 难道是因为主对象table被写在后面所以没办法添加?

求解释啊求解释
发表于 2012-11-25 13:46:28 | 显示全部楼层
是的,AR 不是什么都支持,复杂的请用 SQL 直接写。
 楼主| 发表于 2012-11-25 16:31:29 | 显示全部楼层
Hex 发表于 2012-11-25 13:46
是的,AR 不是什么都支持,复杂的请用 SQL 直接写。

嗯嗯 看了下源码 修改修改也是可以的 不过怕把其他的搞坏了 就放弃了
现在就采用的直接写SQL

话说 Hex酱 你真的太客气了 拜托下次不要对我用 请 字哦 我会过意不去的
发表于 2012-11-26 00:12:06 | 显示全部楼层
ichou 发表于 2012-11-25 16:31
嗯嗯 看了下源码 修改修改也是可以的 不过怕把其他的搞坏了 就放弃了
现在就采用的直接写SQL

呵呵,你太客气了
发表于 2012-12-2 10:43:23 | 显示全部楼层
Hex 发表于 2012-11-25 13:46
是的,AR 不是什么都支持,复杂的请用 SQL 直接写。

一直没注意到这个问题。直到前几天自己遇到了,找了好久,最终发现AR不支持这么干。
 楼主| 发表于 2012-12-2 10:57:50 | 显示全部楼层
o熊小猫o 发表于 2012-12-2 10:43
一直没注意到这个问题。直到前几天自己遇到了,找了好久,最终发现AR不支持这么干。 ...

本版积分规则