thinkphp CURD操作
来源:互联网 发布:大数据建模工程师 编辑:程序博客网 时间:2024/04/28 22:36
6.13 CURD操作
(下面的CURD操作我们均以M方法创建模型实例来说明,因为不涉及到具体的业务逻辑)
创建(Create)
在ThinkPHP中使用add方法新增数据到数据库(而并不是create方法)。data(可选):要新增的数据,支持数组和对象,如果留空取当前数据对象
options(可选):操作表达式,通常由连贯操作完成,默认为空数组
replace(可选):是否允许写入时更新,默认为false(个别数据库支持)
回调接口写入前 _before_insert(&$data,$options)
写入成功 _after_insert($data,$options)
返回值如果数据非法或者查询错误则返回false
如果是自增主键 则返回主键值,否则返回1
相关方法通常和data、create方法配合使用使用示例如下:
- $User = M("User"); // 实例化User对象
- $data['name'] = 'ThinkPHP';
- $data['email'] = 'ThinkPHP@gmail.com';
- $User->add($data);
- $User->data($data)->add();
使用create方法的例子:
- $User = M("User"); // 实例化User对象
- // 根据表单提交的POST数据创建数据对象
- $User->create();
- $User->add(); // 根据条件保存修改的数据
从2.1版开始恢复了批量插入数据的addAll方法(仅针对Mysql数据库),如:
- $User->addAll($data)
- add($data='',$options=array(),$replace=false)
读取(Read)
在ThinkPHP中读取数据的方式很多,通常分为读取数据和读取数据集。读取数据集使用select方法(新版已经废除原来的findall方法):
查询错误返回false
查询结果为空返回null
查询成功返回查询的结果集(二维索引数组)
相关方法通常配合连贯操作where、field、order、limit、join等一起使用使用示例:
- $User = M("User"); // 实例化User对象
- // 查找status值为1的用户数据 以创建时间排序 返回10条数据
- $list = $User->where('status=1')->order('create_time')->limit(10)->select();
如果查询错误返回false
如果查询结果为空返回null
如果查询成功返回查询的结果(索引数组)
相关方法通常配合连贯操作where、field、order、join等一起使用读取数据的操作其实和数据集的类似,select可用的所有连贯操作方法也都可以用于find方法,区别在于find方法最多只会返回一条记录,因此limit方法对于find查询操作是无效的。下面是一些查询的例子:
- $User = M("User"); // 实例化User对象
- // 查找status值为1name值为think的用户数据
- $User->where('status=1 AND name="think"')->find();
field(必须):要获取的字段字符串(多个用逗号分隔)
sepa(可选):字段数据间隔符号,如果是 NULL返回数组为数组。默认为null。
回调接口查询后 _after_find(&$result,$options)返回值如果查询结果为空返回null
如果field是一个字段则返回该字段的值
如果field是多个字段,返回数组。数组的索引是第一个字段的值,sepa为null则返回二维数组。
相关方法通常配合连贯操作where、limit、order等一起使用示例如下:
- $User = M("User"); // 实例化User对象
- // 获取ID为3的用户的昵称
- $nickname = $User->where('id=3')->getField('nickname');
如果需要返回数组,可以用:
- $this->getField('id',true); // 获取id数组
- $User = M("User"); // 实例化User对象
- // 获取所有用户的ID和昵称列表
- $list = $User->getField('id,nickname');
如果传入多个字段的名称,例如:
- $list = $User->getField('id,nickname,email');
如果我们传入一个字符串分隔符:
- $list = $User->getField('id,nickname,email',':');
getField方法的sepa参数还可以支持限制数量,例如:
- $this->getField('id,name',5); // 限制返回5条记录
- $this->getField('id',3); // 获取id数组 限制3条记录
更新(Update)
在ThinkPHP中使用save方法更新数据库,并且也支持连贯操作的使用。data:要保存的数据,如果为空,则取当前的数据对象。
options:为数组的时候表示操作表达式,通常由连贯操作完成;为数字或者字符串的时候表示主键值。默认为空数组。
回调接口更新前_before_update(&$data,$options)
更新成功后 _after_update($data,$options)
返回值如果查询错误或者数据非法返回false
如果更新成功返回影响的记录数
相关方法通常配合连贯操作where、field、order等一起使用
- $User = M("User"); // 实例化User对象
- // 要修改的数据对象属性赋值
- $data['name'] = 'ThinkPHP';
- $data['email'] = 'ThinkPHP@gmail.com';
- $User->where('id=5')->save($data); // 根据条件保存修改的数据
因此下面的代码不会更改数据库的任何记录
- $User->save($data);
- $User = M("User"); // 实例化User对象
- // 要修改的数据对象属性赋值
- $data['id'] = 5;
- $data['name'] = 'ThinkPHP';
- $data['email'] = 'ThinkPHP@gmail.com';
- $User->save($data); // 根据条件保存修改的数据
还有一种方法是通过create或者data方法创建要更新的数据对象,然后进行保存操作,这样save方法的参数可以不需要传入。
- $User = M("User"); // 实例化User对象
- // 要修改的数据对象属性赋值
- $data['name'] = 'ThinkPHP';
- $data['email'] = 'ThinkPHP@gmail.com';
- $User->where('id=5')->data($data)->save(); // 根据条件保存修改的数据
- $User = M("User"); // 实例化User对象
- // 根据表单提交的POST数据创建数据对象
- $User->create();
- $User->save(); // 根据条件保存修改的数据
如果只是更新个别字段的值,可以使用setField方法。
如果查询错误返回false
如果更新成功返回影响的记录数
相关方法必须配合连贯操作where一起使用使用示例:
- $User = M("User"); // 实例化User对象
- // 更改用户的name值
- $User-> where('id=5')->setField('name','ThinkPHP');
- $User = M("User"); // 实例化User对象
- // 更改用户的name和email的值
- $data = array('name'=>'ThinkPHP','email'=>'ThinkPHP@gmail.com');
- $User-> where('id=5')->setField($data);
setInc($field,$step=1)字段值增长
setDec($field,$step=1)字段值减少
参数field:要更新的字段名。
step:增长或者减少的数值,默认为1。
回调接口如果查询错误返回false
如果更新成功返回影响的记录数
返回值如果查询错误返回false
如果更新成功返回影响的记录数
相关方法必须配合连贯操作where一起使用
- $User = M("User"); // 实例化User对象
- $User->where('id=5')->setInc('score',3); // 用户的积分加3
- $User->where('id=5')->setInc('score'); // 用户的积分加1
- $User->where('id=5')->setDec('score',5); // 用户的积分减5
- $User->where('id=5')->setDec('score'); // 用户的积分减1
删除(Delete)
在ThinkPHP中使用delete方法删除数据库中的记录。用法delete($options=array())参数options:为数组的时候表示操作表达式,通常由连贯操作完成,如果没有传入任何删除条件,则取当前数据对象的主键作为条件;为数字或者字符串的时候表示主键值。默认为空数组。回调接口删除成功后 _after_delete($data,$options)返回值如果查询错误返回false
如果删除成功返回影响的记录数
相关方法通常配合连贯操作where、field、order等一起使用示例如下:
- $User = M("User"); // 实例化User对象
- $User->where('id=5')->delete(); // 删除id为5的用户数据
- $User->where('status=0')->delete(); // 删除所有状态为0的用户数据
- // 删除所有状态为0的5 个用户数据 按照创建时间排序
- $User->where('status=0')->order('create_time')->limit('5')->delete();
- ThinkPHP 之 curd 操作
- thinkphp数据库操作CURD
- thinkphp CURD操作
- ThinkPHP 数据库CURD操作
- ThinkPHP CURD操作
- thinkphp--CURD操作
- ThinkPHP的CURD操作
- ThinkPHP学习小记(CURD操作)
- ThinkPhp基本的curd操作
- ThinkPhp基本的curd操作
- thinkphp 的关联模型 CURD操作
- ThinkPHP学习简单的CURD操作
- ThinkPHP的简单CURD操作代码
- thinkphp 学习之 CURD操作数据创建
- thinkPHP常用数据操作(一)CURD
- thinkphp CURD
- 【ThinkPHP系列篇】Thinkphp框架的CURD操作(三)
- Thinkphp 的CURD,增、删、读、写操作
- 刚写的一个js分页类,未优化
- 古诗文欣赏-春夜宴桃李园序
- 真空度测试仪有哪些需要注意的事项
- 绝缘耐压测试仪使用说明及接线图
- 绝缘油介电强度测试仪使用功能说明…
- thinkphp CURD操作
- 绝缘电阻测试仪测试原理使用方法及…
- 变压器变比测试仪详细百科
- 变压器变比组别测试仪资料百科
- 变压器有载分接开关测试仪详细攻略
- 局部放电测试仪安全注意事项及仪器…
- 全自动介质损耗测试仪注意事项及仪…
- 3.iOS 硬件 感光 录音 近距离感应 定位,加速计 二维码 饼图 真机测试
- 介质损耗测试仪的变频技术测量方法…