ThinkPHP中的模型

1、什么是模型(Model)

模型表示企业数据和业务规则,实际项目开发中,主要实现与数据库进行操作。

2、模型的定义规则

模型类的命名规则是除去表前缀的数据表名称,采用驼峰法命名,并且首字母大写,然后加上模型类的关键词Model,再加上类文件后缀.class.php

案例:实现移动办公自动化系统的组织结构功能

① 设计数据库db_think

② 设计数据表结构(tk_dept)

id      编号     int 自动增长 主键

name 部门名称 varchar(40)

pid 父级        int 字段值来自上级id,根节点0

sort 排序     int

remark 备注信息 varchar(255)

③ 使用SQL语句创建数据表

④ 创建一个Dept控制器

⑤ 导入add.html模板到./Application/Admin/View/Dept文件夹下

⑥ 更改add.html页面中的images/css/js路径信息

⑦ 更改办公系统左侧导航链接,要用到的知识点:

U方法

主要功能:用于生成导航链接,如/index.php/Admin/Dept/add,使用方法如下:

在实际项目开发中我们通常使用第三种方式,U('模块/控制器/操作方法')

3、ThinkPHP中的模型定义步骤

路径:./Application/模块/Model(模型)

定义规则:DeptModel.class.php

编写内容三步走:

4、模型的实例化

实例化模型必须有一个前提,设置配置文件链接数据库,否则会出现以下错误:

在./Application/Common/Conf/config.php文件中,配置参数如下:

还要特别注意,设置完配置文件后,还需要在php.ini文件中,开启pdo_mysql.dll扩展,因为在ThinkPHP3.2版本后,使用PDO进行数据库操作。

设置后,记得重启Apache服务器。

 

ThinkPHP中的模型有两种实例化方式:

1)实例化自定义模型

① 实例化自定义模型

调试结果:

② 快速实例化自定义模型D方法(重点掌握)

调试结果:

2)实例化系统模型

① 实例化系统类模型

调试结果:

 

② 快速实例化系统类模型M方法(重点掌握)

调试结果:

 

答疑:D方法与M方法都可以实例化模型,那么两者之间有何区别呢?

答:D方法与M方法都用于实例化模型对象,但是D方法实例化的是自定义模型对象,而M方法是实例化系统类对象。相比而言,自定义模型对象拥有更多的功能。

5、模型中的CURD操作

CURD:增删改查

 

C增加操作:

D删除操作:

U更新操作:

R查询操作

ThinkPHP中的模型的更多相关文章

  1. ThinkPHP中的模型二

    ThinkPHP中的模型 1.为什么要创建数据对象 案例:使用ThinkPHP完成部门管理 ① 设计数据库 ② 创建Dept控制器 路径:./Application/Admin/Controller创 ...

  2. ThinkPHP中的模型命名

    当我们创建一个UserModel类的时候,其实已经遵循了系统的约定.ThinkPHP要求数据库的表名和模型类的命名遵循一定的规范,首先数据库的表名和字段全部采用小写形式,模型类的命名规则是除去表前缀的 ...

  3. ThinkPHP中视图模型详解.

    很多TP的新手对于模型中的视图模型不甚了解,官方虽然有详细手册,但是对于初学者来说还是比较难以理解! 先简单说一下视图模型所能实现的功能,基本就是主表与副表之间各个字段的关联问题,实现多表关联查询,相 ...

  4. thinkphp中如何实现无限级分类?

    thinkphp中如何实现无限级分类? 一.总结 1.数据表设计+递归算法 二.php实现无限级分类实例总结 1.数据库数据如下: 2.任务需求:给一个id,求自己和所有父亲. 3.实现代码如下:th ...

  5. thinkphp 中模型究竟是什么用?

    thinkphp 中模型究竟是什么用? 问题 似乎所有的操作都能在控制器中就能完成,模型除了几种验证之外,究竟是干什么用的,这个问题一直没理解透 解答 解答一 要明白这个问题,必须了解 MVC 历史. ...

  6. [转]ThinkPHP中实例化对象M()和D()的区别,select和find的区别

    1.ThinkPHP中实例化对象M()和D()的区别 在实例化的过程中,经常使用D方法和M方法,这两个方法的区别在于M方法实例化模型无需用户为每个数据表定义模型类,如果D方法没有找到定义的模型类,则会 ...

  7. ThinkPHP 中M方法和D方法详解----转载

    转载的地址,http://blog.163.com/litianyichuanqi@126/blog/static/115979441201223043452383/ 自己学到这里的时候,不能清除的分 ...

  8. ThinkPHP 中M方法和D方法的具体区别(转)

    M方法和D方法的区别 ThinkPHP 中M方法和D方法都用于实例化一个模型类,M方法 用于高效实例化一个基础模型类,而 D方法 用于实例化一个用户定义模型类. 使用M方法 如果是如下情况,请考虑使用 ...

  9. ThinkPHP中实例化对象M()和D()的区别,select和find的区别

    原文:ThinkPHP中实例化对象M()和D()的区别,select和find的区别 1.ThinkPHP中实例化对象M()和D()的区别 在实例化的过程中,经常使用D方法和M方法,这两个方法的区别在 ...

随机推荐

  1. Php-SPL库中的迭代器类详解(转)

    SPL提供了多个迭代器类,分别提供了迭代访问.过滤数据.缓存结果.控制分页等功能.,因为php总是在不断壮大,我尽可能列出SPL中所有的迭代类.下面其中一些迭代器类是需要php5.4,另外一些如Sea ...

  2. 一、List的扩展

    前言 List的三个扩展方法 1.处理符合in()格式的扩展方法 2.处理符合SelectListItem类型的扩展方法(SelectListItem类型是下拉框要用到的类型) 3.Distinct方 ...

  3. Linux中如何使用gThumb批量调整图片大小

    Linux中如何使用gThumb批量调整图片大小 导读 如果你的工作涉及到图片编辑和处理,就一定会有同时对多张图片进行批量大小调整的经历.虽然大多数图片编辑应用都能够非常容易地批量调整多张图片,但对于 ...

  4. 用komodo建立python开发环境

    配置 在菜单中选择Edit.Preferences. 代码自动完成 更改tab代表的空格数 括号自动关闭和语法检查 interactive shell 中文支持 缩写 点击菜单View.Tabs &a ...

  5. MTD NANDFLASH驱动相关知识介绍

    转:http://blog.csdn.net/zhouzhuan2008/article/details/11053877 目录 MTD总概述 MTD数据结构 MTD相关层实现 MTD,Memory ...

  6. Traveling by Stagecoach 状态压缩裸题

    Traveling by Stagecoach dp[s][v]  从源点到达  v,状态为s,v的最小值.  for循环枚举就行了. #include <iostream> #inclu ...

  7. [Java,JavaEE] 最常用的Java库一览

    引用自:http://www.importnew.com/7530.html 本文由 ImportNew - 邢 敏 翻译自 programcreek.欢迎加入Java小组.转载请参见文章末尾的要求. ...

  8. 【Linux/Ubuntu学习2】ubuntu-ubuntu10.04使用wine安装SourceInsight

    1. 环境:ubuntu10.04 2. 安装 wine 关于 wine ,请参考这里.通过网络安装: $ sudo apt-get install wine 3. 安装 SourceInsight ...

  9. property在括号中应该怎样写

    property 属性的定义,类似于get set assign: 简单的赋值,不更改索引计数 使用assign是针对基础的数据类型,比如NSinterger,CGFloat和c数据类型(int fl ...

  10. DML 数据操控语言

    一.DML数据操作语言  (DQL  select ) 主要用于检索.插入和修改数据库信息.它是最常用的SQL命令,如INSERT(插入).UPDATE(更新).SELECT(选择).DELETE(删 ...