关于thinkphp中的model层的问题

_Red_Code_ 2016-01-04 10:52:23
用这框架用了一段时间了,但一直都只是用了view层和controller层,一直没有用过model层,有人知道这个model具体在实际开发中是干嘛的吗?
...全文
253 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
_Red_Code_ 2016-01-04
  • 打赏
  • 举报
回复
引用 1 楼 jordan102 的回复:
Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。 通常模型对象负责在数据库中存取数据。
可我所有的数据库存取都在controller里完成了,比如下面controller里的代码,意思是要把下面的某些封到model里才正规?

    public function goodsPage(){
        $table_goods=M('goods');

        $goods_id=I('param.id');

        $info_where['id']=$goods_id;

        $goods_info=$table_goods->where($info_where)->field('id,name,price,type,img,detail_img1,detail_img2,detail_img3,number,supply')->select();

        $this->assign('info',$goods_info);

        $this->display();
    }
一起混吧 2016-01-04
  • 打赏
  • 举报
回复
Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。 通常模型对象负责在数据库中存取数据。
如花alen 2016-01-04
  • 打赏
  • 举报
回复
假如你做一个 列表展示页 和一个 导出excel功能 不写模型 相同的select数据 你得在俩个function里写俩次 如果写了模型 俩个function中可以调用一个模型 可以省很多事 少写很多代码 也方便以后的修改 和html 共用一个top.html footer.html 是一个道理
一起混吧 2016-01-04
  • 打赏
  • 举报
回复
试试下面这样写看行不 action 代码:
 public function goodsPage(){
       $goods=D('Goods');
       $goods_info = $goods->foo();
        $this->assign('info',$goods_info);
        $this->display();
    }
在model文件夹下建立一个 GoodsModel.class.php 文件 代码如下:

<?php
class GoodsModel extends Model{
    public function foo(){
       $table_goods=M('goods');
 
        $goods_id=I('param.id');
 
        $info_where['id']=$goods_id;
 
        $goods_info=$table_goods->where($info_where)->field('id,name,price,type,img,detail_img1,detail_img2,detail_img3,number,supply')->select();
       return $goods_info;
   }
}
xuzuning 2016-01-04
  • 打赏
  • 举报
回复
首先 MVC 并无标准,他只是反映了大多数人对事物的认知 其次 M、V、C 间并无明确的分工,不需要过于拘泥 M 还是 C 按照 MVC 的一般解释,网站开发中,你的工作都应该在 M、V 中完成,C 几乎没事可做(尤其是多入口架构) 现代框架中,M 充当了数据库操作的角色。实际上是将部分业务逻辑在 C 中完成
_Red_Code_ 2016-01-04
  • 打赏
  • 举报
回复
能说下具体是如何进行封装到model里的吗,比如我上面的那段代码,谢谢
一起混吧 2016-01-04
  • 打赏
  • 举报
回复
引用 2 楼 RedCode_ 的回复:
[quote=引用 1 楼 jordan102 的回复:] Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。 通常模型对象负责在数据库中存取数据。
可我所有的数据库存取都在controller里完成了,比如下面controller里的代码,意思是要把下面的某些封到model里才正规?

    public function goodsPage(){
        $table_goods=M('goods');

        $goods_id=I('param.id');

        $info_where['id']=$goods_id;

        $goods_info=$table_goods->where($info_where)->field('id,name,price,type,img,detail_img1,detail_img2,detail_img3,number,supply')->select();

        $this->assign('info',$goods_info);

        $this->display();
    }
[/quote]对滴,标准的mvc是这样。
php大版主说分太高...就改了 版本: ThinkPHP_3.0RC2_Core 作者: selfimpr Blog: http://blog.csdn.net/lgg201 Mail: lgg860911@yahoo.com.cn 环境/工具: • php-5.3.5-fpm • nginx-1.0.14 • vim + vim.debugger • xdebug-2.2.0RC1 参考: • 模式: ThinkPHP_3.0_Full • 概念: ThinkPHP3.0完全开发手册 目的: 1. 熟悉ThinkPHP工作流程 2. 熟悉ThinkPHP提供的公共函数库 3. 熟悉ThinkPHP的Action, Model, View等封装 4. 了解ThinkPHP的ORM 5. 熟悉ThinkPHP的模板引擎和标签库 概要: 通过阅读ThinkPHP源代码熟悉基于其的MVC开发, 并了解MVC框架实现细节. 评价: 1. 文档鼓励跨模块调用, 增加了系统耦合度 2. 系统未设计统一出口, 导致系统可控性较差 3. 整体代码略显杂乱, 少量硬编码 代码问题: 1. redirect()函数设计了转页, 但未暴露相应编程接口 2. URL_CASE_INSENSITIVE表意不明确, 它的含意是使用C风格命名(下划线)还是使用Java风格命名(驼峰) 3. 系统函数大量使用了静态变量缓存, 但是部分实现上存在读/写key不一致的bug, 比如A, D 4. U方法将协议硬编码为http://, 不利于扩展 5. Db的工厂接口getInstance()会导致factory()被调用两次 6. 配置了读写分离(DB_RW_SEPARATE)和DB_MASTER_NUM(大于0)时, 存在bug导致master库之前的数据库不能被命. 7. Db->add()方法对_after_insert()回调的处理依赖last_insert_id, 对无自增id的表则无法处理 8. TagLibCxcompiler()方法对标签的处理, literal编号只有一位数字, 当模板标签超过10个时, 导致模板无法展现. 涉及点: 1. 设计相关概念 2. 请求分发流程 3. 数据库抽象 4. Mysql数据库驱动 5. Model基类 6. 视图 7. 内建标签库 8. 少量公共函数
TOPTP代码生成器的出现将给我们带来哪些方便? 大家也许都有同感。 ThinkPHP目录次太多。 配置一个分组后,要在lib/Action下建立分组文件夹,又要在Tpl/default下建立分组文件夹。每建立一个模块 (Action文件)又要再相应的分组目录下面建立模块文件夹,在日常写程序的时候往往你在不同文件夹的切换上面花 了太多时间。 重复的操作太多。 每建一个项目,你都要建立空模块文件EmptyAction.class.php, 每建立一个模块都要写空操作方法_empty() 每建 立一个模型都要写很多相同格式的代码。每建立一个模块也的写很多相同格式的代码。对表的操作都是那些重复的增 、删、查、改代码,命名规则也有诸多限制,很多第一个字母都要大写,模块文件名后面要跟Action.class.php,模 型文件名后面要跟.Model.class.php 这些繁琐的规则,稍不注意你就出错了。 或许你用ThinkPHP做网站都是把一些常用的代码保存在一个文件夹,每次都是复制,再稍作修改,这样也麻烦。 ThinkPHP做GBK编码的网站还有多处乱码。 输出提示信息会乱码,分页有乱码。错误提示有乱码。 为什么其他PHP框架(如qeephp,yii等)都有代码生成器而ThinkPHP没有? TOPTP将为你解决以上问题,让你用ThinkPHP能更快速的建好网站。 TOPTP都有哪些靓点? 1, 自动建立文件夹:分组文件夹,模块文件夹等。 2, 生成模块文件,模型文件,减少你写重复的代码。 3, 能生成CURD操作代码。 对数据库的增、删、查、改。对模型的自动验证一个命令就搞定。 4, 能修改生成器生成的默认样式,自己定义适合你网站项目的模版。 5, 在CMD或linux的终端操作,避免给你网站留下漏洞。运行更快速。
版本: ThinkPHP_3.0RC2_Core 作者: selfimpr Blog: http://blog.csdn.net/lgg201 Mail: lgg860911@yahoo.com.cn 环境/工具: • php-5.3.5-fpm • nginx-1.0.14 • vim + vim.debugger • xdebug-2.2.0RC1 参考: • 模式: ThinkPHP_3.0_Full • 概念: ThinkPHP3.0完全开发手册 目的: 1. 熟悉ThinkPHP工作流程 2. 熟悉ThinkPHP提供的公共函数库 3. 熟悉ThinkPHP的Action, Model, View等封装 4. 了解ThinkPHP的ORM 5. 熟悉ThinkPHP的模板引擎和标签库 概要: 通过阅读ThinkPHP源代码熟悉基于其的MVC开发, 并了解MVC框架实现细节. 评价: 1. 文档鼓励跨模块调用, 增加了系统耦合度 2. 系统未设计统一出口, 导致系统可控性较差 3. 整体代码略显杂乱, 少量硬编码 代码问题: 1. redirect()函数设计了转页, 但未暴露相应编程接口 2. URL_CASE_INSENSITIVE表意不明确, 它的含意是使用C风格命名(下划线)还是使用Java风格命名(驼峰) 3. 系统函数大量使用了静态变量缓存, 但是部分实现上存在读/写key不一致的bug, 比如A, D 4. U方法将协议硬编码为http://, 不利于扩展 5. Db的工厂接口getInstance()会导致factory()被调用两次 6. 配置了读写分离(DB_RW_SEPARATE)和DB_MASTER_NUM(大于0)时, 存在bug导致master库之前的数据库不能被命. 7. Db->add()方法对_after_insert()回调的处理依赖last_insert_id, 对无自增id的表则无法处理 8. TagLibCxcompiler()方法对标签的处理, literal编号只有一位数字, 当模板标签超过10个时, 导致模板无法展现. 涉及点: 1. 设计相关概念 2. 请求分发流程 3. 数据库抽象 4. Mysql数据库驱动 5. Model基类 6. 视图 7. 内建标签库 8. 少量公共函数

4,251

社区成员

发帖
与我相关
我的任务
社区描述
国内外优秀PHP框架讨论学习
社区管理员
  • Framework
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧