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

[讨论/交流] 八卦一下,大家怎样设计model层和数据库的?

[复制链接]
发表于 2011-11-10 02:00:44 | 显示全部楼层 |阅读模式
用了CI有一段时间了,ActiveRecord做得很不错,一些简单的CRUD功能可以不用写SQL,十分方便。但是如果碰到业务逻辑比较复杂的情况,我感觉用ActiveRecord比直接写SQL还麻烦。最近在做一个小型的支付扣费系统,用户充值以后,修改用户的余额,然后在流水账表记录一下,需要写 update,select,insert 语句,中间还有连接表的操作。开始用CI的DB类来操作,觉得有点繁琐,后来索性在mysql里面建一个存储过程,然后用$this->db->query() 来执行存储过程,感觉这样model层比较干净。不过这样的存储过程多起来以后,mysql那边就开始乱套了。数据库表结构已经稳定了,极少更改,但是存储过程却会改动,为了区分这个存储过程是哪个model调用的,在存储过程的名字前面加个model名字的前缀,越写越觉得难看。最要命的是存储过程的参数有变动的情况下,PHP代码和数据库两边都要做修改。
  现在我的情况是简单的CRUD操作用DB库,复杂的操作用存储过程,但是感觉这样不统一的话系统越大越混乱。不知道大家是怎样设计的。
发表于 2011-11-10 02:45:02 | 显示全部楼层
楼主能否发点代码上来?菜鸟想学学其他人是怎样写的 谢谢
发表于 2011-11-10 09:05:14 | 显示全部楼层
一般复杂逻辑都是在model实现,数据操作最好也在model吧,除非是很大数据量,需要优化的,才做到数据库里面。
发表于 2011-11-10 14:15:52 | 显示全部楼层
model全部和数据库打交道了
 楼主| 发表于 2011-11-10 16:55:40 | 显示全部楼层
暂时决定,还是放弃存储过程,改用DB库。
因为网站是放在虚拟主机上面的,未来可能会换供应商,不想到时在新主机上拿着一堆SQL脚本死命刷
发表于 2011-11-11 14:04:05 | 显示全部楼层
复杂逻辑个人是在model里面写sql

本版积分规则