zoukankan      html  css  js  c++  java
  • TP框架---Model模型层---做模型对象

                                    TP框架----Model模型层---------------做模型对象

    Model模型层是用来做什么的呢????

    主要是用来做操作数据库访问的。

    也就说明TP框架自带了一种访问数据库的方式,使用的是Model模型。

    Model模型怎样使用呢???

    要使用Model模型层访问数据库的话,需要做配置,因为必须把数据库的一些参数配置好之后,才能连接,所以找到Config.php

                                            配置文件,打开

                                                                        这些是关于数据库的配置,

                                                                         要把这些粘贴到config.php

                                                                          进行修改。

    config.php配置文件(修改配置的地方)

    /* 数据库设置 */
    
        'DB_TYPE'               =>  'mysql',     // 数据库类型
    
        'DB_HOST'               =>  'localhost', // 服务器地址
    
        'DB_NAME'               =>  '',          // 数据库名
    
        'DB_USER'               =>  'root',      // 用户名
    
        'DB_PWD'                =>  '',          // 密码
    
        'DB_PORT'               =>  '3306',        // 端口(数据库的默认端口)
    
        'DB_PREFIX'             =>  '',    // 数据库表前缀
    
        'DB_PARAMS'                =>  array(), // 数据库连接参数   
    
        'DB_DEBUG'                             =>  TRUE, // 数据库调试模式 开启后可以记录SQL日志
    
        'DB_FIELDS_CACHE'       =>  false,        // 启用字段缓存(在开发的时候把它打成false,开发完之后打成true)
    
        'DB_CHARSET'            =>  'utf8',      // 数据库编码默认采用utf8
    
        'DB_DEPLOY_TYPE'        =>  0, // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
    
        'DB_RW_SEPARATE'        =>  false,       // 数据库读写是否分离 主从式有效
    
        'DB_MASTER_NUM'         =>  1, // 读写分离后 主服务器数量
    
    'DB_SLAVE_NO'           =>  '', // 指定从服务器序号
    

      

    做好配置之后,就可以连接数据库了。

     

                         在这个Main控制器里写

    首先,做一个方法

    造操作方法

    function DB()//造操作方法  //这个操作方法要操作数据库,DB()方法名可随便起

    {

                       //怎样使用模型层???

    //TP框架里的Model,我们要做模型就要写在Model文件夹下。数据库里的每一张表,对应到TP框架里面就是这个TP框架的类,一张表对应TP框架里面的一个类,比如Info表对应到TP框架里面就是一个Info的模型类。表对应的类,表里的字段(就是列)对应过来就是成员变量。如果使用Info表,所使用的模型实际上就是InfoModel这样一个类,InfoModel类如果不对Info的模型进行特殊的操作(如果不对Info表进行特殊的操作)做简单的增删改查可以不用做模型文件,可以是空的即使Model文件夹不做任何的模型文件依然可以操作数据库。

    只有当表进行了特殊的操作,在做Model文件(模型文件),例如在表里添加验证就需要做模型。

    //怎样把模型类拿来使用呢???

    //要操作hao表,怎样做hao模型对象???

           //造对象有三种方法::

                       //1.原始方式根据命名空间找到类文件才能new出来。使用原始方式就必须要做模型文件了,即使模型文件里面内容是空的也要做,要有这个文件才能找到这个文件new出来。要用第一种原始方式的话,就要在Model文件夹下建一个文件出来。

    建一个模型文件,要操作info表

    要操作info表,所以表名打头(如果数据库里的表名是大写就写大写,是小写就写小写)

    Model.Class.php(控制器)

    这是一个类文件。这个类需要有命名空间。namespace HomeModel;  这个命名空间从根开始它的根是Home,Home模块下的Model文件夹

    这个类也要继承父类Model类,父类在Library-----Think------Model.class.php

     所以要使用它的父类,use ThinkModel;  Think代表的是这个类所在的根 ,Think文件夹下有个类文件叫Model .class.php

    class infoModel extends Model                    

     

    /*$m = new HomeModelInfoModel();

                       var_dump($m);*/

     

    显示的结果:

    InfoModel的对象

                                                    关于数据库的信息

     

    从哪里看对不对

    造的Info表没有问题的话,这里就显示Info表的所有字段。能够看到这个页面,说明这个Model对象能够造出来,并且数据库的配置没有问题,能够找到这张表

     

     

    //2.使用快捷方法D()

                       $m = D();  ///返回一个对象

                       //var_dump($m);

    显示的结果:

     

     

    造了个父类的对象,就找不到这张表的信息了。因为没有指定哪一张表所以找不到这张表的信息了。造了个父类的对象,是没有表的信息的。说明在造对象时,没有指定操作哪一张表的话,那造出的对象是一个父类对象,父类对象在操作的时候,比如要调用添加,添加数据,不知往哪一张表里添加,就会出问题。

    所以在造的时候就要给它一个表名。

     

    $m = D("Info");  ///返回一个对象

    var_dump($m);

    显示结果:

    造的对象是InfoModel对象


    也就说明,,不用做模型文件,通过D()方法,依然可以生成InfoModel对象

    D()方法,是new的减化版

     

             //3.使用快捷方法M()

                         $m = M();

                   var_dump($m);

    显示结果:

     

     造了一个父类对象

    说明,使用M()方法也可以造模型对象

     

                   //$m = M("Nation");

                       //var_dump($m);

     

    显示结果:

     

    对象是父类对象

     

     

    这个M()方法和D()方法是有区别的。D()方法相当于new的简化版,但是M()方法就是来造父类对象的。

    M()方法,写参数和没有写参数是不同的。

    写参数就有这张表。显示结果:

    只要出现表的字段信息,就能操作这张表。比如字段信息:

     

     

  • 相关阅读:
    Android中的sp与wp
    MTK
    linux kernel文件系统启动部分
    Java项目构建基础之统一结果
    线程和线程池的学习
    SpringBoot 中MyBatis的配置
    MyBatis中使用Map传参——返回值也是Map
    OAuth2的学习
    Java 跨域问题
    Spring Cloud 中的 eureka.instance.appname和spring.application.name 意思
  • 原文地址:https://www.cnblogs.com/yuyu1993/p/5724174.html
Copyright © 2011-2022 走看看