CURD操作

CURD是一个数据库技术中的缩写词,一般的项目开发的各种参数的基本功能都是CURD。它代表
创建(Create) 、 更新(Update) 、 读取(Read) 和 删除(Delete) 操作。CURD 定义了用于处

理数据的基本原子操作。

创建数据

大多数情况下,CURD的Create操作通常会通过表单来提交数据,首先,我们可以Home模块的View/Form

目录下面创建一个add.html 模板文件。

然后,我们还需要在Home模块的Controller目录下面创建一个FormController.class.php文件,暂时只需

要定义FormController类,不需要添加任何操作方法。

<?php
namespace Home\Controller;
use Think\Controller;
class FormController extends Controller{

}

然后访问http://localhost/app/index.php/home/Form/add 

然后就可以看到表单页面了我们并没有在控制器里面定义add操作方法,但是很显然,访问是正常的。因为ThinkPHP在没有找到对应操作方法的情况下,会检查是否存在对应的模板文件,由于我们有对应的add模。板文件,所以控制器就直接渲染该模板文件输出了。所以说对于没有任何实际逻辑的操作方法,我们只需要直接定义对应的模板文件就行了。

我们可以看到,在表单中定义了提交地址是到Form控制器的insert操作,为了处理表单提交数据,我们需
要在FormController类中添加insert操作方法,如下:

<?php
namespace Home\Controller;
use Think\Controller;
class FormController extends Controller{
public function insert(){
$Form = D('Form');
if($Form->create()) {
$result = $Form->add();
if($result) {
$this->success('数据添加成功!');
}else{
$this->error('数据添加错误!');
}
}else{
$this->error($Form->getError());
}
}
}

如果你的主键是自增类型的话,add方法的返回值就是该主键的值。不是自增主键的话,返回值表示插入

数据的个数。如果返回false则表示写入出错。

模型

为了方便测试,我们首先在数据库中创建一个think_form表

我们在insert操作方法中用了D函数,和M函数不同,D函数需要有对应的模型类。

然后我们来创建模型类

模型类的定义规范是:模型名+Model.class.php (模型名的定义采用驼峰法并且首字母大写)

我们在Home模块的Model目录下面创建FormModel.class.php文件,添加代码如下:

<?php
namespace Home\Model;
use Think\Model;
class FormModel extends Model {
// 定义自动验证
protected $_validate = array(
array('title','require','标题必须'),
);
// 定义自动完成
protected $_auto = array(
array('create_time','time',1,'function'),
);

}

主要是用于表单的自动验证和自动完成,如果使用D函数实例化模型类,一般需要对应一个数据模型类,而且create方法会自动把表单提交的数据进行自动验证和自动完成(如果有定义的话),如果自动验证失败,就可以通过模型的getError方法获取验证提示信息,如果验证通过,就表示数据对象已经成功创建,但目前只是保存在内存中,直到我们调用add方法写入数据到数据库。这样就完成了一个完整的Create操作。

读取数据

当我们成功写入数据后,就可以进行数据读取操作了。

public function read($id=0){
$Form = M('Form');
// 读取数据
$data = $Form->find($id);
if($data) {
$this->assign('data',$data);// 模板变量赋值
}else{
$this->error('数据错误');
}
$this->display();

}

read操作方法有一个参数$id,表示我们可以接受URL里面的id变量(后面我们会在变量章节详细描述。这里之所以用M方法而没有用D方法,是因为find方法是基础模型类Model中的方法,所以没有必要浪费开销去实例化FormModel类(即使已经定义了FormModel类)。我们通常采用find方法读取某个数据,这里使用了AR模式来操作,所以没有传入查询条件,find($id) 表示读取主键为$id值的数据,find方法的返回值是一个数组。

然后我们可以在模板中输出数据,添加一个read模板文件

<table>
<tr>
<td>id:</td>
<td>{$data.id}</td>
</tr>
<tr>
<td>标题:</td>
<td>{$data.title}</td>
</tr>
<tr>
<td>内容:</td>
<td>{$data.content}</td>
</tr>

</table>

完成后,我们就可以访问

http://localhost/app/index.php/home/Form/read/id/1来查看了

更新数据

在成功写入并读取数据之后,我们就可以对数据进行编辑操作了,首先我们添加一个编辑表单的模板文件

edit.html,如下:

<FORM method="post" action="__URL__/update">
标题:<INPUT type="text" name="title" value="{$vo.title}"><br/>
内容:<TEXTAREA name="content" rows="5" cols="45">{$vo.content}</TEXTAREA><br/>
<INPUT type="hidden" name="id" value="{$vo.id}">
<INPUT type="submit" value="提交">

</FORM>

编辑模板不同于新增表单,需要对模板进行变量赋值,所以,我们这次需要在FormController类添加两个

操作方法:

public function edit($id=0){
$Form = M('Form');
$this->assign('vo',$Form->find($id));
$this->display();
}
public function update(){
$Form = D('Form');
if($Form->create()) {
$result = $Form->save();
if($result) {
$this->success('操作成功!');
}else{
$this->error('写入错误!');
}
}else{
$this->error($Form->getError());
}

}

完成后,我们就可以访问

http://localhost/app/index.php/home/Form/edit/id/1

删除数据

删除数据很简单,只需要调用delete方法就可以

$Form = M('Form');

$Form->delete(5);

表示删除主键为5的数据,delete方法可以删除单个数据,也可以删除多个数据,这取决于删除条件。

delete方法的返回值是删除的记录数,如果返回值是false则表示SQL出错,返回值如果为0表示没有删除任何数据。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值