ThinkPHP模板的知识(比较全的知识)解析 下载本文

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

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

实例化Model的三种方式: 1. 2.

$goods = new 命名空间GoodsModel(); $goods = D(‘模型标志’);

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

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

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

$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/www.visa158.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(); 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元的商品的总数目

【数据添加】

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

$arr = array(‘goods_name’=>’iphone5s’,’goods_weight’=>’109’); //注意:goods_name和goods_weight是数据表中字段名称 $goods -> add($arr);

2.AR方式实现数据添加

a) ActiveRecord 活跃记录 b) AR规定了程序与数据库之间的关系 c) 什么是AR:

d) ①一个数据表对应一个类model e) ②一条数据记录对应类的一个对象 f) ③每个字段对应该对象的具体属性 g) tp框架的AR是假的 $goods = D(“Goods”);

$goods -> goods_name = “htc_one”; $goods -> goods_price = 3000; $goods -> add();

以上两种方式:数组、AR,最后add都要把新记录的主键id值返回

【收集表单数据入库操作】 1. 2. 3.

制作一个表单

通过$_POST收集信息

通过create()方法实现数据收集,该方法对于非法的字段会自动进行过滤

注意:一个add控制器实现两个逻辑,一个是打出添加页面,一个是向数据库添加内容