zoukankan      html  css  js  c++  java
  • 第 39 章 ThinkPHP--模型初步(下)

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

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

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

    如果还找不到, 就会直接实例化基类 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')); }
    我的个人博客,欢迎来访问!网址:http://www.miuu.club
  • 相关阅读:
    8.20 附加赛3
    8.22 附加赛4
    Codeforces Round #505 (Div 1 + Div 2) (A~D)
    8.9 附加赛2
    8.10 正睿暑期集训营 Day7
    8.9 正睿暑期集训营 Day6
    8.8 正睿暑期集训营 Day5
    8.7 正睿暑期集训营 Day4
    8.6 正睿暑期集训营 Day3
    8.5 正睿暑期集训营 Day2
  • 原文地址:https://www.cnblogs.com/yu520zhong/p/4852689.html
Copyright © 2011-2022 走看看