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

[讨论/交流] 请教一下大家Model层里到底要做写什么?

[复制链接]
发表于 2013-11-14 21:47:21 | 显示全部楼层 |阅读模式
  原先写过一个Web项目使用的是CI,那时我的做法是“轻model重control”,也就是类似于判断用户登录,验证表单数据等业务逻辑都写在controll里,导致controll变的很繁杂,而model里只是写了一些对数据库进行增删改查的方法,然后将数据返回给controll进行操作。
  这两天我看了网上很多关于MVC设计模式的文章,发现原来我的做法是错误的,按照MVC的思想应该是“重model轻control”。control里只进行简单的操作,而所有的业务逻辑都放在model里进行操作。
  我想请教一下大家,既然把model变得如此盘大,那对数据库操作的方法是否还是要写在model里,或是应该再写一个数据库管理类,把数据库操作都放在里面,当model里的业务逻辑需要数据时,再调用这个数据库管理类里的方法对数据库进行操作。
  请问我这样的理解对吗?大家也都是这样写项目的吗?
发表于 2013-11-14 22:41:45 | 显示全部楼层
比较同意你的想法,把业务逻辑和model混起来会让模型变得臃肿。你可以看看我博客中对业务逻辑的处理。http://pengbotao.cn/codeigniter
发表于 2013-11-15 22:59:48 | 显示全部楼层
一般逻辑和数据库操作都写MODEL里。重MODEL。
不过现在还有人有一种做法,在C和M中间,再加一层S service层,model负责基本数据库操作,service负责业务逻辑,控制器只管调现成的service
发表于 2013-11-15 23:46:59 | 显示全部楼层
目前的开发实践都是重model,大量的业务逻辑需要重用,而controller是不能调用controller的。

其实model逻辑分层才是稍大型项目的最佳方案,要不,用yii去就好了。。。
发表于 2013-11-18 10:13:13 | 显示全部楼层
dren_a 发表于 2013-11-15 23:46
目前的开发实践都是重model,大量的业务逻辑需要重用,而controller是不能调用controller的。

其实model逻 ...

比较同意这种做法。我的一半处理方式是把model层分为service和base_model两层。

本版积分规则