【系统常量信息】

   

获取系统常量信息:

    

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

    

显示如下:

【跨控制器调用】

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

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

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

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

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

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

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

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

convertion.php

config.php

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

2.制作model模型

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

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

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

  3.字段缓存设置

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

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

实例化Model的三种方式:

  1. $goods =  new  命名空间GoodsModel();
  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属性的元素信息,如果存在就会执行执行

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

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

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

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

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元的商品的总数目

2016/05/10 thinkphp 3.2.2 ①系统常量信息 ②跨控制器调用 ③连接数据库配置及Model数据模型层 ④数据查询的更多相关文章

  1. ThinkPHP讲解(五)——数据库配置及Model数据模型层、查询

    数据库配置 在TP框架中要进行连接数据库操作,要进行配置 要在convertion.php中找到“数据库配置”,并复制到项目配置文件config.php中 Model模型层制作 model:数据库中每 ...

  2. ThinPHP命名空间,连接数据库是要修改的配置文件,Model数据模型层,跨控制器调用,如何获取系统常量信息,

    一.命名空间(主要是为了实现自动加载类) *命名空间(相当于虚拟的目录),为了让类有一个统一的文件夹来管理(可以自动加载'类'),每个文件都要有命名空间*tp如何做命名空间:*TP框架下有一个初始命名 ...

  3. 6月16 ThinkPHP连接数据库及Model数据模型层--------查询及数据添加

    连接数据库配置及Model数据模型层 convertion.php config.php 1.在config.php做数据库连接配置 2.修改配置 /* 数据库设置 */ 'DB_TYPE' => ...

  4. ThinkPHP框架 3.2.2 获取系统常量信息 连接数据库 命名空间的理解

    获取系统常量信息 随便一个方法里加上这句话都能获取到系统常量信息!! var_dump(get_defined_constants()); <?php namespace Admin\Contr ...

  5. ThinkPHP中的跨控制器调用与框架执行流程

    一.跨控制器调用 UserController.class.php <?php namespace Home/Controller use Think/Controller class User ...

  6. ThinkPHP 3.2.2跨控制器调用方法

     所谓跨控制器调用,指的是在一个控制器中调用另一个控制器的某个方法.在ThinkPHP中有三种方式实现跨控制器调用: 直接实例化: A()函数实例化; R()函数实例化. (1)直接实例化  直接实例 ...

  7. TP系统常量信息

    [系统常量信息] 获取系统常量信息: 如果加参数true,会分组显示: 显示如下: [跨控制器调用] 一个控制器在执行的时候,可以实例化另外一个控制,并通过对象访问其指定方法. 跨控制器调用可以节省我 ...

  8. Murano Weekly Meeting 2016.05.10

    Meeting time: 2016.May.10 1:00~2:00 Chairperson:  Serg Melikyan, from Mirantis Meeting summary: 1. m ...

  9. 2016/05/23 thinkphp M方法和D方法的区别

    M方法和D方法的区别 ThinkPHP 中M方法和D方法都用于实例化一个模型类,M方法 用于高效实例化一个基础模型类,而 D方法 用于实例化一个用户定义模型类. 使用M方法 如果是如下情况,请考虑使用 ...

随机推荐

  1. Uncaught ReferenceError: 板栗 is not defined at HTMLButtonElement.onclick (view:1)

    对JS传值一直以为都是随便传过去就行,直到今天遇到了中文传值的问题 中文传值不能够需要在调用的位置加 对于要传的值加单引号或者双引号 比如说下面这个样子,我这里还还记反斜杠注释 '<button ...

  2. 活动预告丨易盾CTO朱浩齐将出席2018 AIIA大会,分享《人工智能在内容安全的应用实践》

    本文来自网易云社区 对于很多人来讲,仿佛昨天才燃起来的人工智能之火,转眼间烧遍了各个角落,如今我们的生活中,处处渗透着人工智能.10月16日,2018年 AIIA人工智能开发者大会在苏州举办,网易云易 ...

  3. python之tkinter变量设置 2014-4-9

    python 可以自己定义变量以及变量类型mystring = StringVar(ticked_yes = BooleanVoption1 = IntVar()volume = DoubleVar( ...

  4. 使用JQuery.slideBox实现图片滚动效果

    1.下载JQuery.slideBox和jquery插件,并引用 <link href="css/jquery.slideBox.css" rel="stylesh ...

  5. [POJ1797] Heavy Transportation(最大生成树 || 最短路变形)

    传送门 1.最大生成树 可以求出最大生成树,其中权值最小的边即为答案. 2.最短路 只需改变spfa里面的松弛操作就可以求出答案. ——代码 #include <queue> #inclu ...

  6. Toad Oracle 本地/远程数据库导入/导出 数据库备份

    1. Toad进入数据库后,选择 Database ==> Export  ===>  Export Utility Wizard ,选择export  user(按用户导出),选择Toa ...

  7. 解决静态utils里面注入mapper对象

    项目中需要在一个utils工具类中,调用mapper对象来进行功能实现,然而静态方法里面直接注入会报空指针的错误,网上查了一些资料得出如下解决办法 重点步骤: 1,utils类上面添加@Compone ...

  8. linux shell if语句使用方法 [转载]

    最精简的 if 命令的语法是: if TEST-COMMANDS; then CONSEQUENT-COMMANDS; fi TEST-COMMAND 执行后且它的返回状态是0,那么 CONSEQUE ...

  9. Flex里监听mouseDownOutside事件解决弹出窗口点击空白关闭功能

    其实当用户在使用 PopUpManager 打开的某个组件外部单击时,会从该组件分派一个mouseDownOutside事件 监听该事件就能实现点击空白处关闭窗口的功能 this.addEventLi ...

  10. js的基础(平民理解的执行上下文/调用堆栈/内存栈/值类型/引用类型)

    与以前的切图比较,现在的前端开发对js的要求似乎越来越高,在开发中,我们不仅仅是要知道如何运用现有的框架(react/vue/ng), 而且我们对一些基础的知识的依赖越来越大. 现在我们就用平民的方法 ...