第 39 章 ThinkPHP--模型初步(下)

当然,如果有必要使用具体的模型类时,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‘)); }
时间: 2024-11-03 05:43:00

第 39 章 ThinkPHP--模型初步(下)的相关文章

第 39 章 ThinkPHP--模型初步

一.创建数据库 在使用模型操作之前,我们首先创建一个数据库:thinkphp.创建一个用户表:user. 添加一些数据即可. ThinkPHP 内置了抽象数据库访问层,把不同的数据库操作封装起来.我们只需要使用 公共的 Db 类进行操作,无须针对不同的数据库写不同的代码和底层实现.Db 类会自动调用 相应的数据库驱动来处理. 目前支持的数据库包括 Mysql(包含 mysql 和 mysqli).SqlServer.PgSQL.Sqlite. Oracle.Ibase.Mongo.PDO 等.

第39章 ETH—Lwip以太网通信

第39章     ETH-Lwip以太网通信 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/firege 互联网技术对人类社会的影响不言而喻.当今大部分电子设备都能以不同的方式接入互联网(Internet),在家庭中PC常见的互联网接入方式是使用路由器(Router)组建小型局域网(LAN),利用互联网专线或者调制调解器(modem)经过电话线网络,连接到互联网服务提供商(ISP),由互联

C# 6 与 .NET Core 1.0 高级编程 - 39 章 Windows 服务(上)

译文,个人原创,转载请注明出处(C# 6 与 .NET Core 1.0 高级编程 - 39 章 Windows 服务(上)),不对的地方欢迎指出与交流. 章节出自<Professional C# 6 and .NET Core 1.0>.水平有限,各位阅读时仔细分辨,唯望莫误人子弟. 附英文版原文:Professional C# 6 and .NET Core 1.0 - Chapter 39 Windows Services --------------------------------

C++ primer plus读书笔记——第9章 内存模型和名称空间

第9章 内存模型和名称空间 1. 头文件常包含的内容: 函数原型. 使用#define或const定义的符号常量. 结构声明. 类声明. 模板声明. 内联函数. 2. 如果文件名被包含在尖括号中,则C++编译器将在存储标准头文件的主机系统的文件系统中查找.但如果头文件名包含在双引号中,则编译器将首先查找当前的工作目录或源代码目录(或其他目录,这取决于编译器).如果没有在那里找到头文件,则将在标准位置中查找.因此在包含自己的头文件时,应使用引号而不是尖括号. 3. 链接程序将目标文件代码.库代码和

第 39 章 ThinkPHP--自动验证

本节课,我们将要学习一下 ThinkPHP 模型层提供的一种数据验证方法,可以在使用 create 创建数据对象的时候进行自动验证. 一.验证规则 数据验证可以对表单中的字段进行非法的验证操作. 一般提供了两种验证方式:静态定 义($_validate 属性)和动态验证(validate()方法). //验证规则 array( array(验证字段1,验证规则,错误提示,[验证条件,附加规则,验证时间]), array(验证字段2,验证规则,错误提示,[验证条件,附加规则,验证时间]), ...

ThinkPHP 模型(Model)命名规范

一个小问题搞了好久:如果数据库的表名中有下划线,那么在用thinkphp做自动完成时注意Model类的命名要变成驼峰法,文件名和类名都要变.( 另外注意:只有使用create方法创建数据时才能调用到自动验证和自动完成 ) ThinkPHP 模型(Model)命名规范 模型命名规范ThinkPHP 对数据库的表名和模型类的命名遵循一定的规范.首先数据库的表名和字段全部采用小写形式,模型类的命名规则是除去表前缀的数据表名称,并且首字母大写,然后加上模型类的后缀定义.一些例子如下:表名(不含前缀)模型

21.CSS盒模型【下】

第十六章  CSS盒模型[下] 一.元素可见性 使用visibility属性可以实现元素的可见性,这种样一般可以配合JavaScript来实现效果. 属性         值                   说明                 CSS版本 {  visible      默认值,元素在页面上可见          2 visibility {  hidden       元素不可见,但会占据空间          2 {  collaose     元素不可见,隐藏表格的行

【STM32H7教程】第39章 STM32H7的DMAMUX基础知识(重要)

完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第39章       STM32H7的DMAMUX基础知识(重要) 本章教程为大家讲解DMAMUX(Direct memory access request multiplexer,直接存储器访问请求复用器),本章知识点非常重要,是掌握好DMA1,DMA2和BDMA的关键一步. 39.1 初学者重要提示 39.2 DMAMUX基础知识 39.3 DMAMUX的HAL库

C和指针 (pointers on C)——第六章:指针(下)习题

有一定的难度,作者只做了前三题! 题目请见 http://download.csdn.net/download/wangpegasus/5701765 1. char *find_char(char const *source, char const *chars) { char *ptr; if(source != NULL && chars != NULL) { for (; *source != '\0'; source++) { for (ptr = (char *) chars;