当然,如果有必要使用具体的模型类时,ThinkPHP 还提供了 D()方法来直接是实例化 模型类,并且还可以免去引入命名空间等操作。

//实例化UserModel类 $user = D('User');

PS:使用 D()方法比直接使用模型类更加的智能,如果在\Home\Model\UserModel 找不到该模型类,那么就会去公共模块下找\Common\Model\UserModel 去找。

如果还找不到, 就会直接实例化基类 Model()类,也就是等同于使用 M()方法。

D()方法可以直接调用当前模块的模型类,那么如果跨模块调用的话,那怎么处理呢?

比如 Admin 后台模块,可以使用目录声明。

//跨模块实例化 $user = D('Admin/User'); 有时,你可能想使用原生的 SQL 语句进行操作数据库。

那么可以采用实例化空模型基 类或者空 M()方法。

//空 M()方法 $user = M(); //或者new Model();

空基类 var_dump($user->query("SELECT * FROM think_user WHERE user='蜡笔小新 '")); 

三.字段定义 每个模型类操作着每个对应的数据表,在大多数情况下,系统会自动获取当前数据表的 字段信息。

而当模型类第一次实例化时,系统会自动缓存字段,并且永久缓存,除非删除了 运行时缓存或者设置不缓存。

如果调试模式下,则不会生成字段缓存文件,每次都是从数据表里重新获取。

生成缓存 的目的显而易见,就是为了快速响应。ThinkPHP 默认是开启字段缓存,因为在实际运行中, 不会更改字段结构。

字段缓存文件保存在 Runtime/Data/_fields/目录里,当你在开发阶段,字段和表会经常 变动,所以要关闭缓存。

关闭缓存的方法为: // 关闭字段缓存 'DB_FIELDS_CACHE'=>false //开启了调试模式,自动关闭 PS:如果开启缓存状态,新增了字段,那么可能新字段无法刷新出来,必须删除 /Data/_fields 文件夹,重新获取字段。//查看字段结构 var_dump($user->getDbFields());

你也可以使用手动定义数据表字段的方式取代字段缓存方式,这种方式可以提高性能, 避免 IO 开销。

//手动定义数据表字段,_pk表示主键 class UserModel extends Model { protected $fields = array('id', 'user', '_pk'=>'id'); }

//type 定义每个字段的类型,可以永远字段验证

class UserModel extends Model { protected $fields = array('id', 'user', '_pk'=>'id', 'type'=>array('id'=>'smallint','user'=>'varchar')); }

转载于:https://www.cnblogs.com/yu520zhong/p/4852689.html

第 39 章 ThinkPHP--模型初步(下)相关推荐

  1. 【控制】《复杂运动体系统的分布式协同控制与优化》-方浩老师-第11章-意图场模型干预下的人机共享控制

    第10章 回到目录 无 第11章-意图场模型干预下的人机共享控制 11.1 引言 11.2 问题描述 11.3 基于意图场的共享控制算法设计 11.3.1 意图场模型设计与分析 11.3.2 共享控制 ...

  2. 怎么用matlab画无差别曲线,MATLAB系列第二章初等模型.ppt

    <MATLAB系列第二章初等模型.ppt>由会员分享,可在线阅读,更多相关<MATLAB系列第二章初等模型.ppt(68页珍藏版)>请在人人文库网上搜索. 1.第二章 初等模型 ...

  3. matlab的meadian函数_24 第二十四章 时间序列模型_W

    <24 第二十四章 时间序列模型_W>由会员分享,可在线阅读,更多相关<24 第二十四章 时间序列模型_W(31页珍藏版)>请在人人文库网上搜索. 1.第二十四章时间序列模型 ...

  4. 第39章 ETH—Lwip以太网通信—零死角玩转STM32-F429系列

    第39章     ETH-Lwip以太网通信 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/ ...

  5. 第39章 ETH—Lwip以太网通信—零死角玩转STM32-F429系列

    第39章     ETH-Lwip以太网通信 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/ ...

  6. 数字图像处理:第二十二章 基于模型的编码

    第二十二章基于模型的编码 目录 引言 基于对象的编码 基于模型的编码 作业 1. 引言 为了获得更高的压缩效率并保持一定的视频质量以支持超低码率(大约10kbps)双向视频应用,不考虑内容特点的仅仅针 ...

  7. 《RabbitMQ 实战指南》第五章 RabbitMQ 进阶(下)

    <RabbitMQ 实战指南>第五章 RabbitMQ 进阶(下) 文章目录 <RabbitMQ 实战指南>第五章 RabbitMQ 进阶(下) 一.持久化 二.生产者确认 1 ...

  8. 第18章 检测点模型

    第18章 检测点模型 在第13章我们讨论了在训练结束后如何保存和序列化模型到磁盘上.在上一章,我们学习了在过拟合和欠拟合发生的时候如何画出它们,使您能够在训练时,在保持显示出希望的模型的同时,杀死性能 ...

  9. 西瓜书学习笔记第2章(模型评估与选择)

    西瓜书学习笔记第2章(模型评估与选择) 2.1经验误差与过拟合 2.2评估方法 2.2.1留出法(hold-out) 2.2.2交叉验证法(cross validation) 2.2.3自助法(boo ...

最新文章

  1. 加密货币支付卡公司与BCH达成合作
  2. 浙江财经大学java试卷_2020年浙江财经大学社会保障考研真题试卷及试题答案,管理学考研试题下载...
  3. 最新技术前沿与产业风向标来了,百度研究院发布2021年十大趋势
  4. IIS AppCreate子目录的错误(0x80020006)
  5. Express 路由、Ejs 、静态文件托管、中间件
  6. Dvbbs 7.1论坛鼠标指针修改方法
  7. Inter Thread Latency
  8. java闹钟程序设计_JAVA课程设计_闹钟的设计与实现项目-报告_附源代码.doc
  9. [网络收集]LINUX磁盘挂载mount和共享
  10. 章文嵩:开源为我打开一扇窗
  11. 虚拟化技术和容器技术详解
  12. java 分词获取词性_Ansj中文分词Java开发词性分类
  13. 南阳oj入门题-阶乘因式分解(一)
  14. 第四讲 Linux常用命令
  15. 学习@浅墨_毛星云的【OpenCV入门教程】之四
  16. 计算机专业保研英语自我介绍,计算机专业保研面试英文自我介绍
  17. StreamX 在 Joyme 的生产实践,从遇见到相爱一气呵成
  18. 被称为世上最经典的25句话
  19. C语言中的四舍六入五成双 和 四舍五入
  20. 海外社交媒体SNS运营之社交媒体概览

热门文章

  1. java连接sqlserver非默认实例连接字符串设置
  2. SCCM报表点和SQL Server的报表服务集成, 随心所欲创建报表?
  3. [转]Ubuntu以管理员权限打开文件(夹)
  4. 磁盘空间使用关乎SQL Server性能
  5. ubuntu一键安装LAMP 及一键卸载
  6. linux 环境变量设置(临时 + 永久)
  7. [Python] L1-051 打折-PAT团体程序设计天梯赛GPLT
  8. python 获取当天凌晨零点的时间戳
  9. zookeeper启动失败的排错 no route to host 防火墙未关闭导致的
  10. 记一些印象深刻的 Bug