• TP框架基础(三)


    【系统常量信息】

    获取系统常量信息:

    如果加参数true,会分组显示:

    》系统常量信息里经常用到的是user里的路径

    》 APP_PATH =>string'./shop/' 项路径

    》 MODE_PATH 模型路径
    》 __SELF__ 自身路径

    》 '__APP__'=>string'/ThinkPHP/index.php' 入口文件

    》 __MODULE__ =>string'/ThinkPHP/index.php/Home' 当前模块路径

    》 __ACTION__ 当前方法的路径

    》 __CONTROLLER__ 当前控制器的路径

    可以通过以上这些常量获取当前的路径

    【跨控制器调用】

    一个控制器在执行的时候,可以实例化另外一个控制,并通过对象访问其指定方法。

    跨控制器调用可以节省我们代码的工作量

    Main控制器中有一个Info操作方法

    想要在其它控制器,比如Login中调用,我们可以实例化控制器对象,调用里面的方法即可:

    造对象有快捷函数供我们使用:

    A(“[模块/]控制器标志”) 实例化控制器对象

    R([模块/]控制器标志/操作方法)  实例化对象同时调用指定方法

    注:【跨控制器调用】没有限制条件一定要在同一个文件夹下,但是需要在同一个命名空间下。如果不是,需要更改引用的命名空间

    》 TP框架提供的跨控制器调用的三种快捷方法
      1.new MainController(); 造对象
      2.A("[模块]/控制器标识");  快捷函数 跨模块调用;可以快速的造对象;如果是同一个模块下,模块路径部可以省略
      3.R("控制器/操作方法");    快捷函数 造控制器对象并且调用方法

    【连接数据库配置及Model数据模型层】

    convertion.php

    config.php

    1.在config.php做数据库连接配置

    做数据模型层需要先做个数据库配置,然后根据自己的需要到自己项目配置中修改.



    修改中:

    数据库调式模式 默认为true 开启后可以记录SQL日志
    启用字段缓存默认为true 会把字段全部缓存下来,可以提高查询速度

    数据库的默认端口号是3306

    配置好后Model层就可以用了

    2.用Model层之前要造model模型

    a) model本身就是一个类文件

    b) 数据库中的每个数据表都对应一个model模型文件

    c) 最简单的数据model模型类  

    3.字段缓存设置

    tp框架执行过程中会使用到数据表中的字段信息,通过sql语句可以查询”show colums from table”  ,处于性能考虑,可以把字段缓存,避免每次重复执行sql语句。

    4.可以根据情况对当前的model模型进行个性化设置

    实例化Model的三种方式:

    1.  $goods =  new  命名空间GoodsModel();  -->new 命名空间模型

        例如:$info = new HomeModelInfoModel();

    2.  $goods = D(‘模型标志’);    

         a) $goods = D(“Goods”);

      b) 该$goods是父类Model的对象,但是操作的数据表还是sw_goods

      c) $obj = D();  实例化Model对象,没有具体操作数据表,与M()方法效果一致

    3.$obj = M();

      a) 实例化父类Model

      b) 可以直接调用父类Model里边的属性,获得数据库相关操作

      c) 自定义model就是一个空壳,没有必要实例化自定义model

        d) $obj = M(‘数据表标志’);  实例化Model对象,实际操作具体的数据表

    $obj = D(标志);

    $obj = D();

    $obj = M(标志);

    $obj = M();

    D()M()方法的区别:

    前者是tp3.1.3里边对new操作的简化方法;

    后者在使用就是实例化Model父类 

    两者都在函数库文件定义ThinkPHP/Common/functions.php

    注意:如果没有对应的model模型文件类,也可以直接实例化model对象进行操作

    D()M()方法都可以实例化操作一个没有具体model模型类文件的数据表。

    【数据查询】

     select()是数据(父类)模型的一个指定方法,可以获得数据表的数据信息

    返回一个二维数组信息,当前数据表的全部数据信息

    $obj = D();  创建对象

    $obj -> select();  查询数据

    select  字段,字段  from  表名  where 条件  group 字段 having  条件   order 排序  limit 限制条数;

    SELECT%DISTINCT%%FIELD%FROM %TABLE%%JOIN%%WHERE%%GROUP%%HAVING%%ORDER%%LIMIT% %UNION%%COMMENT%

    $obj -> field(字段,字段);  查询指定字段

    $obj -> table(数据表);   设置具体操作数据表

    $obj -> where(参数);   参数就是正常sql语句where后边的条件信息

    例如:( “goods_price >100 and  goods_name like ‘三%’”)

    $obj -> group(字段);  根据字段进行分组查询

    $obj -> having(参数条件);  having 条件设置

    $obj -> order(‘price  desc/asc’)  排序查询

    $obj -> limit([偏移量,]条数)  限制查询的条数

    sql语句里边具体的条件设置在tp框架model模型里边体现为具体的方法操作

    以上方法理论上是父类Model的对应方法

    父类model具体存在方法:   field()  where()   limit()

    还有一些方法在__call()自动调用函数里边: table()  group()  order()  having()

    __call()魔术方法里边会判断当前的执行方法是否是一个method属性的元素信息,如果存在就会执行执行

    以上多个方法是同时使用多个进行条件显示(并且没有顺序要求)

    $obj -> limit(5)->field(‘id,name’)->order(‘price asc’) -> table(‘sw_goods’)->select();

    以上许多方法执行没有顺序要求,许多方法执行后都是把具体的参数赋予到model属性options里边,最后根据options拼装sql语句。

     

     $info = $goods -> where()->field(字段)->select();

    连贯操作:在方法结束之后,调用对象本身

    连贯操作,多条件查询 

    M()造Model的时候没有的定义表名,想查询哪个表,可以调用table方法传表名
    例如:$info ->table("info");

    select()方法

    1. 返回一个二维数组信息

    2. 返回全部数据表信息

    3. 给该方法传递参数

      a) select(30)  查询主键值等于30的记录信息

      b) select(“10,12,14”)  查询主键值在101214范围的记录信息

    4 .  find()如果我们查询的结果只有一个信息,使用select()会返回一个二维数组,为了使用方便我们会希望返回一个一维数组,这时候可使用find()方法

     

    5 .  having()方法设置查询条件,where()设置查询条件

    6. 相关聚合函数 count()  sum()   avg()   max()   min()

     以上聚合函数是最后被调用的方法

       以上方法可以结合具体条件方法使用

       例如:$goods -> where(‘goods_price >1000’)->count(); 大于1000元的商品的总数目

    注:

     select方法:查询数据集,可以有表达式参数,这个方法可以返回结果。相当于查询所有的数据,返回的是二维数组也可以给select参数来查询,根据主键查询 

        例:$info->select("p001");  

        查询两个条件 $info->select( "p001,p002");

    造模型的对象,model和controller同理,可以在think文件夹底下找到Model的类(Model.class.php) 而且是所有模型层的父类。用D方法实际造的是一个父类的对象,由于传了      一个参数,参数是表名。就会自动根据这个表造出模型

    M(); 也可以按照D方法同理使用。但是如果不传参数的话,造的就是父类对象

  • 相关阅读:
    LPTHW 笨办法学python 20章
    LPTHW 笨方法学python 19章
    LPTHW 笨方法学python 18章
    LPTHW 笨方法学习python 16章
    hadoop删除节点。
    url中的百分号转译
    thrift编译安装
    python学习:函数的学习
    jsp静态导入和动态导入 笔记
    简要描述cookie和session的区别:
  • 原文地址:https://www.cnblogs.com/supermeimei/p/5495472.html
Copyright © 2020-2023  润新知