【系统常量信息】

获取系统常量信息:

如果加参数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 \Home\Model\InfoModel();

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”)  查询主键值在10、12、14范围的记录信息

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方法同理使用。但是如果不传参数的话,造的就是父类对象

TP框架基础(三)的更多相关文章

  1. TP框架 基础1

    php框架 一.真实项目开发步骤: 多人同时开发项目,协作开发项目.分工合理.效率有提高(代码风格不一样.分工不好) 测试阶段 上线运行 对项目进行维护.修改.升级(单个人维护项目,十分困难,代码风格 ...

  2. tp框架基础(详细步骤分解,易懂)下

    在浏览器中如果要访问操作方法的时候以什么方式来访问 有四种方式 第一种是get方式,第二种是访问路径 这四种方式我们可以通过修改配置文件来改掉url的模式 我们需要来改一下我们的配置文件 在这个路径下 ...

  3. TP框架基础

    什么是TP框架: 一堆代码的集合,里边有变量.函数.类.常量,设计模式MVC.AR数据库.单例等等.全称是Tinkphp框架; 为什么使用框架: 使用框架将全部精力集中在业务层次,节省50-60%的工 ...

  4. tp框架基础知识

    作者:黄力军 index.php入口文件:作用,所有tp框架里的内容要想访问文件.都要走index.php文件他是整个程序的入口 Application代表应用程序的目录   所有写的应用程序放这里 ...

  5. TP框架基础(四)----添加数据

    [数据添加] add() 该方法返回被添加的新记录的主键id值 两种方式实现数据添加 1. 数组方式数据添加 $goods = D(“Goods”); $arr = array(‘goods_name ...

  6. TP框架基础(一)

    [使用框架]  官网:thinkphp.cn.  目前建议使用thinkPHP3.2版本 一.结构目录>Thinkphp文件夹,是thinkPHP的核心文件,里面的内容是不允许我们修改的 > ...

  7. TP框架基础2

    ---恢复内容开始--- [空操作和空控制器处理] 空操作:就没有指定的操作方法 空控制器:没有指定控制器 http://网址/index.php/Home/User/login http://网址/ ...

  8. TP框架基础 (二) ---空控制器和空操作

    通过之前的学习我们知道了index.php是一个入口文件,如果没有这个入口文件的话,我们需要自己创建! [视图模板文件创建] 视图模板文件存放发位置在: 里面没有模板文件 如果我们想要访问Login控 ...

  9. tp框架的详细介绍,tp框架基础

    php框架 真实项目开发步骤: 多人同时开发项目,协作开发项目.分工合理.效率有提高(代码风格不一样.分工不好) 测试阶段 上线运行 对项目进行维护.修改.升级(单个人维护项目,十分困难,代码风格不一 ...

随机推荐

  1. 剖析Qt的事件机制原理(源代码级别)

    在用Qt写Gui程序的时候,在main函数里面最后依据都是app.exec();很多书上对这句的解释是,使Qt程序进入消息循环.下面我们就到exec()函数内部,来看一下他的实现原理.Let's go ...

  2. delphi dispose释放内存的方法

    delphi dispose释放内存的方法 2010-06-08 19:39:59|  分类: DELPHI |  标签: |举报 |字号大中小 订阅     dispose使用方法的简单介绍在本文末 ...

  3. php 的mvc开发

    至于什么MVC结构,其实就是三个Model,Contraller,View单词的简称,,Model,主要任务就是把数据库或者其他文件系统的数据按 照我们需要的方式读取出来.View,主要负责页面的,把 ...

  4. play框架之ORM

    初次接触play2,采用的ebeans作为ORM框架.网上的资料并不多,总结如下: 数据的查询可以放在model类里,也可以放在controllers里面,我更倾向于后者,感觉数据流比较完整,好理解, ...

  5. 《SpringMVC从入门到放肆》十五、SpringMVC之上传文件

    上一篇我们学习了数据分组校验,已经可以灵活的在项目中进行数据校验了,今天来学习SpringMVC的上传文件功能.相对来说SpringMVC的上传功能,还是比较简单的. 一.添加依赖 <depen ...

  6. thinkphp5ajax分頁&&搜索後分頁

    //控制器層 //分頁 public function list_january_table(){ //設置當前頁 $page = input("post.page") ? inp ...

  7. Solr配置文件 schema.xml

    1 添加自己的分词器(mmseg4j) 意思是textCommplex 这个类型,用的是 com.chenlb.mmseg4j.solr.MMSegTokenizerFactory 这个分词器,词库是 ...

  8. Requests方法 -- cookie绕过验证码登录操作

    前言有些登录的接口会有验证码:短信验证码,图形验证码等,这种登录的话验证码参数可以从后台获取的(或者查数据库最直接).获取不到也没关系,可以通过添加 cookie 的方式绕过验证码. 1.这里以登录博 ...

  9. 20152016-acmicpc-neerc-northern-subregional-contest J:Journey to the "The World's Start"(单调队列+DP+二分)

    http://codeforces.com/gym/100801/attachments 题意:给出n-1张不同的票,票价分别为 pi,每张票每次最多可以坐 r 个站(1<=r<n),并且 ...

  10. 数字IC后端布局阶段对Tie-high和Tie-low Net的处理

    本文转自:自己的微信公众号<集成电路设计及EDA教程> 里面主要讲解数字IC前端.后端.DFT.低功耗设计以及验证等相关知识,并且讲解了其中用到的各种EDA工具的教程. 考虑到微信公众平台 ...