ThinkPHP31快速入门2数据CURDWord文档下载推荐.docx
- 文档编号:21518000
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:9
- 大小:40.02KB
ThinkPHP31快速入门2数据CURDWord文档下载推荐.docx
《ThinkPHP31快速入门2数据CURDWord文档下载推荐.docx》由会员分享,可在线阅读,更多相关《ThinkPHP31快速入门2数据CURDWord文档下载推荐.docx(9页珍藏版)》请在冰豆网上搜索。
br/>
3.内容:
TEXTAREA
content"
rows="
5"
cols="
45"
/TEXTAREA>
4.<
submit"
value="
提交"
5.<
/FORM>
然后,我们还需要在项目的Action目录下面创建一个FormAction.class.php文件,暂时只需要定义FormAction类,不需要添加任何操作方法,代码如下:
1.class
FormAction
extends
Action{
2.}
接下来,访问
1.http:
//localhost/app/index.php/Form/add
就可以看到表单页面了,我们并没有在控制器里面定义add操作方法,但是很显然,访问是正常的。
因为ThinkPHP在没有找到对应操作方法的情况下,会检查是否存在对应的模板文件,由于我们有对应的add模板文件,所以控制器就直接渲染该模板文件输出了。
所以说对于没有任何实际逻辑的操作方法,我们只需要直接定义对应的模板文件就行了。
我们可以看到,在表单中定义了提交地址是到Form模块的insert操作,为了处理表单提交数据,我们需要在FormAction类中添加insert操作方法,如下:
2.
public
function
insert(){
3.
$Form
=
D('
Form'
);
4.
if($Form->
create())
{
5.
$result
$Form->
add();
6.
if($result)
7.
$this->
success('
操作成功!
'
8.
}else{
9.
error('
写入错误!
10.
}
11.
12.
error($Form->
getError());
13.
14.
15.}
如果你的主键是自增类型的话,add方法的返回值就是该主键的值。
不是自增主键的话,返回值表示插入数据的个数。
如果返回false则表示写入出错。
模型
为了方便测试,我们首先在数据库中创建一个think_form表:
1.CREATE
TABLE
IF
NOT
EXISTS
`think_form`
(
`id`
smallint(4)
unsigned
NULL
AUTO_INCREMENT,
`title`
varchar(255)
NULL,
`content`
`create_time`
int(11)
PRIMARY
KEY
(`id`)
7.)
ENGINE=MyISAM
DEFAULT
CHARSET=utf8
;
我们在insert操作方法中用了D函数,和M函数不同,D函数需要有对应的模型类,下面我们就来创建模型类。
模型类的定义规范是:
模型名+Model.class.php
(模型名的定义采用驼峰法并且首字母大写)
我们在项目的Lib/Model目录下面创建FormModel.class.php文件,添加代码如下:
FormModel
Model
//
定义自动验证
protected
$_validate
array(
array('
title'
'
require'
标题必须'
),
定义自动完成
$_auto
create_time'
time'
1,'
function'
10.}
主要是用于表单的自动验证和自动完成,具体用法我们会用另外的篇幅单独讲述,这里暂时先略过。
我们只要了解的是,如果使用D函数实例化模型类,一般需要对应一个数据模型类,而且create方法会自动把表单提交的数据进行自动验证和自动完成(如果有定义的话),如果自动验证失败,就可以通过模型的getError方法获取验证提示信息,如果验证通过,就表示数据对象已经成功创建,但目前只是保存在内存中,直到我们调用add方法写入数据到数据库。
这样就完成了一个完整的Create操作,所以可以看到ThinkPHP在创建数据的过程中使用了两步:
第一步,create方法创建数据对象,
第二步,使用add方法把当前的数据对象写入数据库。
当然,你完全可以跨过第一步,直接进行第二步,但是这样的预处理有几个优势:
1、无论表单有多复杂,create方法都可以用一行代码轻松创建数据对象;
2、在写入数据之前,可以对数据进行验证和补充;
其实create方法还有很多的功能操作,目的只有一个,确保写入数据库的数据安全和有效。
我们来验证下表单提交的效果,当我们不输入标题就直接提交表单的话,系统会给出标题必须这样的提示信息。
当我们顺利提交表单后,会看到写入数据表的数据中的create_time字段已经有值了,这就是通过模型的自动完成写入的。
如果你的数据完全是内部操作写入而不是通过表单的话(也就是说可以充分信任数据的安全),那么可以直接使用add方法,如:
1.$Form
2.$data['
]
ThinkPHP'
3.$data['
content'
表单内容'
4.$Form->
add($data);
也可以支持对象方式操作:
2.$Form->
title
3.$Form->
content
对象方式操作的时候,add方法无需传入数据,会自动识别当前的数据对象赋值。
读取数据
当我们成功写入数据后,就可以进行数据读取操作了。
在前面一篇中,我们已经知道可以用select方法获取数据集,这里我们来通过find方法获取一个单一数据,定义read操作方法如下:
1.public
read($id=0){
M('
$data
find($id);
if($data)
data
$data;
模板变量赋值
数据错误'
display();
11.}
read操作方法有一个参数$id,表示我们可以接受URL里面的id变量(后面我们会在变量章节详细描述。
这里之所以用M方法而没有用D方法,是因为find方法是基础模型类Model中的方法,所以没有必要浪费开销去实例化FormModel类(即使已经定义了FormModel类)。
我们通常采用find方法读取某个数据,这里使用了AR模式来操作,所以没有传入查询条件,find($id)表示读取主键为$id值的数据,find方法的返回值是一个如下格式的数组:
1.array(
id'
=>
5,
测试标题'
测试内容'
status'
1,
6.)
然后我们可以在模板中输出数据,添加一个read模板文件,
table>
2.<
tr>
td>
id:
/td>
{$data.id}<
/tr>
6.<
标题:
{$data.title}<
9.<
10.<
内容:
{$data.content}<
13.<
14.<
/table>
完成后,我们就可以访问
//localhost/app/index.php/Form/read/id/1
来查看了。
如果你只需要查询某个字段的值,还可以使用getField方法,例如:
M("
Form"
2.//
获取标题
3.$title
where('
id=3'
)->
getField('
上面的用法表示获取id值为3的数据的title字段值。
其实getField方法有很多用法,但是获取某个字段的值是getField方法最常规的用法。
查询操作是最常用的操作,尤其是涉及到复杂的查询条件,我们会在查询语言一章对查询进行更加详细的讲解。
更新数据
在成功写入并读取数据之后,我们就可以对数据进行编辑操作了,首先我们添加一个编辑表单的模板文件edit.html,如下:
1.
__URL__/update"
{$vo.title}"
{$vo.content}<
hidden"
id"
{$vo.id}"
编辑模板不同于新增表单,需要对模板进行变量赋值,所以,我们这次需要在FormAction类添加两个操作方法:
edit($id=0){
vo
5.}
6.public
update(){
save();
15.
16.
17.
18.}
//localhost/app/index.php/Form/edit/id/1
数据的更新操作在ThinkPHP使用save方法,可以看到,我们同样可以使用create方法创建表单提交的数据,而save方法则会自动把当前的数据对象更新到数据库,而更新的条件其实就是表的主键,这就是我们在编辑页面要把主键的值作为隐藏字段一起提交的原因。
如果更新操作不依赖表单的提交的话,就可以写成:
要修改的数据对象属性赋值
5;
4.$data['
5.$data['
ThinkPHP3.1版本发布'
6.$Form->
save($data);
根据条件保存修改的数据
save方法会自动识别数据对象中的主键字段,并作为更新条件。
当然,你也可以显式的传入更新条件:
5.$Form->
id=5'
也可以改成对象方式来操作:
数据对象赋值的方式,save方法无需传入数据,会自动识别。
save方法的返回值是影响的记录数,如果返回false则表示更新出错。
有些时候,我们只需要修改某个字段的值,就可以使用setField方法,而不需要每次都调用save方法。
更改title值
setField('
对于统计字段,系统还提供了更加方便的setInc和setDec方法。
例如:
$User
User"
实例化User对象
$User->
setInc('
score'
3);
用户的积分加3
用户的积分加1
setDec('
5);
用户的积分减5
用户的积分减1
删除数据
删除数据很简单,只需要调用delete方法,例如:
delete(5);
表示删除主键为5的数据,delete方法可以删除单个数据,也可以删除多个数据,这取决于删除条件,例如:
1.$User
2.$User->
delete();
删除id为5的用户数据
3.$User->
delete('
1,2,5'
删除主键为1,2和5的用户数据
4.$User->
status=0'
删除所有状态为0的用户数据
delete方法的返回值是删除的记录数,如果返回值是false则表示SQL出错,返回值如果为0表示没有删除任何数据。
总结
现在,你已经基本掌握了ThinkPHP的CURD操作了,并且学会了使用ThinkPHP的create、add、save和delete方法,还有两个对字段操作的getField和setField方法。
下一篇,我们会更深入的了解下如何使用ThinkPHP提供的查询语言。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ThinkPHP31 快速 入门 数据 CURD
![提示](https://static.bdocx.com/images/bang_tan.gif)