thinkPHP常用数据操作(一)CURD

url访问格式

localhost/index.php/home/index/read/id/1/name/namestr

/*解释

该url格式是tp默认的pathinfo格式

localhost ip地址

index.php 入口文件

home 模块名

index 控制器名(类)

read 操作名(控制器类的函数)

id 参数名

1 参数值

name 参数名

namsstr 参数值

参数可以有多个

*/

数据操作(ActiveRecor模式)

1插入

(1)表单提交方式

$Form = D('Form');//D函数属于自定义类FormModel 的函数,该类继承自Model 
if($Form->create()) {//这两句把表单的提交内容存入数据库,并且保存之前执行自动验证和自动完成
$result = $Form->add();//如果你的主键是自增类型的话,add方法的返回值就是该主键的值。不是自增主键的话,返回值表示插入数据的个数。如果返回false则表示写入出错
if($result) {
$this->success('数据添加成功!');
}else{
$this->error('数据添加错误!');
}
}else{
$this->error($Form->getError());
}

//模型名+Model.class.php (模型名的定义采用驼峰法并且首字母大写)。控制器定义类似。

use Think\Model;
class FormModel extends Model {
// 定义自动验证
protected $_validate = array(
array('title','require','标题必须'),
);
// 定义自动完成
protected $_auto = array(
array('create_time','time',1,'function'),//自动填写create_time字段
);
}

(2)不需要经过表单,直接存入数据库

$Form = D('Form');
$data['title'] = 'ThinkPHP';
$data['content'] = '表单内容';
$Form->add($data);


2读取数据

$Form = M('Form');//使用系统基础类Model,访问根据数据表Form创建对象$Form
$data = $Form->find($id);

//find方法是基础模型类Model中的方法.主键为$id值


if($data) {
$this->assign('data',$data);// 模板变量赋值
}else{
$this->error('数据错误');
}
$this->display();

//find方法,如果带参数,就只能是主键ID,这样能返回对应数据,如果不带参数,返回的是所查询数据集的第一条记录,类似limit(1)这样的.返回结果格式如下

array(
'id' => 5,
'title' => '测试标题',
'content' => '测试内容',
'status' => 1,
)


如果你只需要查询某个字段的值,还可以使用getField方法

$Form = M("Form");
$title = $Form->where('id=3')->getField('title');


3更新数据

<FORM method="post" action="__URL__/update">
......
</FORM>


$Form = D('Form');
if($Form->create()) {
$result = $Form->save();
if($result) {
$this->success('操作成功!');
}else{
$this->error('写入错误!');
}
}else{
$this->error($Form->getError());
}

//直接更新,不经过表单

$Form = M("Form");
// 要修改的数据对象属性赋值
$data['id'] = 5;
$data['title'] = 'ThinkPHP';
$data['content'] = 'ThinkPHP3.2.3版本发布';
$Form->save($data); // 根据条件保存修改的数据

//也可以显式的传入条件

$data['title'] = 'ThinkPHP';
$data['content'] = 'ThinkPHP3.2.3版本发布';

$Form->where('id=5')->save($data); // 根据条件保存修改的数据

//save方法的返回值是影响的记录数,如果返回false则表示更新出错

//有些时候,我们只需要修改某个字段的值,就可以使用setField方法,而不需要每次都调用save方法

$Form = M("Form");
// 更改title值
$Form->where('id=5')->setField('title','ThinkPHP');

//对于统计字段,系统还提供了更加方便的setInc和setDec方法。

/$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


4 删除数据

$Form = M('Form');
$Form->delete(5);//5表示主键的值

//也可以根据条件执行删除操作

$User = M("User"); // 实例化User对象
$User->where('id=5')->delete(); // 删除id为5的用户数据
$User->delete('1,2,5'); // 删除主键为1,2和5的用户数据
$User->where('status=0')->delete(); // 删除所有状态为0的用户数据


注:active record模式:

就是用一个AR类关联数据库的一张表,每个AR对象对应表中的一行数据;对象的属性映射到数据行的对应列



以上内容大部分摘自 thinkphp3.2.3快速入门,详情请参考官方手册

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章