thinkphp笔记

来源:互联网 发布:中国食品安全问题数据 编辑:程序博客网 时间:2024/05/02 01:56

                                                                               tp

1, I方法是ThinkPHP用于更加方便和安全的获取系统输入变量

echo I('get.id'); // 相当于 $_GET['id']echo I('get.name'); // 相当于 $_GET['name']2,实例化模型类的方法,三种,直接实例化,D方法和M方法 上面实例化的时候我们需要传入完整的类名,系统提供了一个快捷方法D用于数据模型的实例化操作。当 \Home\Model\UserModel 类不存在的时候,D函数会尝试实例化公共模块下面的 \Common\Model\UserModel 类。D方法可以自动检测模型类,如果存在自定义的模型类,则实例化自定义模型类,如果不存在,则会实例化系统的\Think\Model基类,同时对于已实例化过的模型,不会重复实例化。D方法实例化模型类的时候通常是实例化某个具体的模型类,如果你仅仅是对数据表进行基本的CURD操作的话,使用M方法实例化的话,由于不需要加载具体的模型类,所以性能会更高。 M方法实例化的时候,默认情况下是直接实例化系统的\Think\Model类,如果你的模型类有自己的业务逻辑,M方法是无法支持的,就算是你已经定义了具体的模型类,M方法实例化的时候是会直接忽略。我们在实例化的过程中,经常使用D方法和M方法,这两个方法的区别在于M方法实例化模型无需用户为每个数据表定义模型类,如果D方法没有找到定义的模型类,则会自动调用M方法。                                             数据库相关3,需要注意的是,ThinkPHP的数据库连接是惰性的,所以并不是在实例化的时候就连接数据库,而是在有实际的数据操作的时候才会去连接数据库(额外的情况是,在系统第一次实例化模型的时候,会自动连接数据库获取相关模型类对应的数据表的字段信息)。4,ThinkPHP find() 方法是和 select() 用法类似的一个方法,不同之处 find() 查询出来的始终只有一条数据,即系统自动加上了 LIMIT 1 限制。 5,ThinkPHP 还提供了自动创建数据对象的 create() 方法。create() 方法将自动收集提交的表单数据并创建数据对象而无需人工干预,这在表单数据字段非常多的情况下更具优势。create() 创建的数据对象存放于内存,在执行入库动作(add() 或 save())之前,都可以进行修改。

在上面的例子里,create()方法 的行为和 date()方法 是一致。但 date() 方法只是简单的创建数据对象,

但 create() 方法还具备:

  • 令牌验证
  • 数据自动验证
  • 字段映射支持
  • 字段类型检查
  • 数据自动完成

6,读取数据

读取数据是指读取数据表中的一行数据(或者关联数据),主要通过find方法完成,

读取数据集其实就是获取数据表中的多行记录(以及关联数据),使用select方法

读取字段值其实就是获取数据表中的某个列的多个或者单个数据,最常用的方法是 getField方法

7,修改数据。

save方法的返回值是影响的记录数,如果返回false则表示更新出错,因此一定要用恒等来判断是否更新失败。

为了保证数据库的安全,避免出错更新整个数据表,如果没有任何更新条件,数据对象本身也不包含主键字段的话,save方法不会更新任何数据库的记录。

因此下面的代码不会更改数据库的任何记录

$User->save($data); 
还有一种方法是通过create或者data方法创建要更新的数据对象,然后进行保存操作,

这样save方法的参数可以不需要传入

如果只是更新个别字段的值,可以使用setField方法

8,删除数据

为了避免错删数据,如果没有传入任何条件进行删除操作的话,不会执行删除操作,例如:

$User = M("User"); // 实例化User对象$User->delete(); 9,sql查询

query方法用于执行SQL查询操作,如果数据非法或者查询错误则返回false,

否则返回查询结果数据集(同select方法)。

如果你当前采用了分布式数据库,并且设置了读写分离的话,query方法始终是在读服务器执行,

因此query方法对应的都是读操作,而不管你的SQL语句是什么。

execute用于更新和写入数据的sql操作,如果数据非法或者查询错误则返回false ,否则返回影响的记录数。

10标签volist标签通常用于查询数据集(select方法)的结果输出,通常模型的select方法返回的结果是一个二维数组,可以直接使用volist标签进行输出。 Volist标签的name属性表示模板赋值的变量名称,因此不可随意在模板文件中改变。id表示当前的循环变量,可以随意指定,但确保不要和name属性冲突



0 0
原创粉丝点击