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

[讨论/交流] $this->db->query(); 算不算Active Record 类

[复制链接]
发表于 2009-9-1 14:38:28 | 显示全部楼层 |阅读模式
ci 建议使用 Active Record;

因为以前 没怎么用过类 也没怎么用过框架, sql语句 一般自已写

如果用 $this->db->query();方法 基本上就是平滑过渡。

我需要改变习惯 用手册里的  Active Record方法不
发表于 2009-9-1 14:44:14 | 显示全部楼层
query是AR父类的方法,AR是将语法编译成SQL,由query执行,query不算AR的语法
 楼主| 发表于 2009-9-1 15:00:07 | 显示全部楼层
那 AR就是多执行了一步 我没有必要 非要用AR是吧

或者说AR是给用不好SQL的人 用的?
发表于 2009-9-1 15:22:59 | 显示全部楼层
多AR可不是执行一步哦,如果追求运行效率就用query
发表于 2009-9-1 17:51:22 | 显示全部楼层
呵呵,用不用 AR 全凭自己喜好,CI 不会强制你做任何事情。
 楼主| 发表于 2009-9-1 19:07:17 | 显示全部楼层
主要是 AR有什么优点 我刚查了一下

优点:可以自动使用 dbprefix 

别的暂时没看到。  暂时先用上吧,等以后在看有什么优点
发表于 2009-9-2 00:37:55 | 显示全部楼层
优点,就是不用写 SQL。隔离各个数据库之间的 SQL 差异。
CI 的 AR 不是 ORM,所以没有架构上的好处,呵呵。
 楼主| 发表于 2009-9-2 06:41:06 | 显示全部楼层
感觉 隔离各个数据库之间的 SQL 差异  这个对大多数项目,没用
发表于 2009-9-2 08:30:00 | 显示全部楼层
本帖最后由 yinzhili 于 2009-9-2 08:31 编辑

我挺喜欢$this->db->query();这个方法,自己写SQL语句,还不太习惯用Active Record,我觉得自己直接写SQL有一个好处是维护起来比较方便、明了,一眼就能看出这段查询是做什么用的。不过如果为了可移植性好,用AR也是正确的选择,毕竟不同的数据库之间还是存在一点点SQL差异,用AR的话就可以轻松地迁移程序到不同的数据库下而不必大量修改代码。
发表于 2009-9-2 08:30:56 | 显示全部楼层
当客户要求更换数据库的时候(mysql to mssql/oracle/etc),你不用改AR代码

本版积分规则