码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2015-10-02 21:15:33      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:

当然,如果有必要使用具体的模型类时,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)); }

 

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

标签:

原文地址:http://www.cnblogs.com/yu520zhong/p/4852689.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!