The DoYouHaoBaby PHP Framework中文开发文档手册
Copyright(c) DoYouHaoBaby.NET All Rights Reserved.
CURD操作

DyhbFrame提供了灵活和方便的数据操作方法,对数据库操作的四个基本操作(CURD):创建、更新、读取和删除的实现是最基本的,也是必须掌握的,在这基础之上才能熟悉更多实用的数据操作方法。CURD操作通常是可以和连贯操作配合完成的。下面来分析下各自的用法:

(下面的CURD操作我们均以M方法创建模型实例来说明,因为不涉及到具体的业务逻辑)

一、创建操作

在DyhbFrame使用add方法新增数据到数据库。

使用方法如下:

$User = M("user"); // 实例化User对象  

$data['name'] = 'Dyhb';  

$data['email'] = 'doyouhaobaby@gmail.com';  

$User->add($data); 


如果你的主键是自动增长类型,并且如果插入数据成功的话,Add方法的返回值就是最新插入的主键值,可以直接获取。

 

二、读取数据

在DyhbFrame中读取数据的方式很多,通常分为读取数据和读取数据集。

读取数据集使用findall方法:

$User = M("user"); // 实例化User对象  

// 查找status值为1的用户数据 以创建时间排序 返回10条数据  

$list = $User->where('status=1')->order('create_time')->limit(10)->findall(); 


findall方法的返回值是一个二维数组,如果没有查询到任何结果的话,也是返回一个空的数组。配合上面提到的连贯操作方法可以完成复杂的数据查询。而最复杂的连贯方法应该是where方法的使用,因为这部分涉及的内容较多,我们会在查询语言部分就如何进行组装查询条件进行详细的使用说明。基本的查询暂时不涉及关联查询部分,而是统一采用关联模型来进行数据操作,这一部分请参考关联模型部分。

读取数据使用find方法:

读取数据的操作其实和数据集的类似,findall可用的所有连贯操作方法也都可以用于find方法,区别在于find方法最多只会返回一条记录,因此limit方法对于find查询操作是无效的。

$User = M("user"); // 实例化User对象  

// 查找status值为1name值为dyhb的用户数据   

$User->where('status=1 AND name="dyhb" ')->find(); 

 

即使满足条件的数据不止一条,find方法也只会返回第一条记录。

如果要读取某个字段的值,可以使用getbyField方法,例如:

$User = M("user"); // 实例化User对象  

// 获取ID为3的用户的昵称   

$array = $User->where('id=3')->getbynickname(); 
$nikename=array['0']['0'];

程序只能使用一个字段,可以返回一个数组:


三、更新数据

在DyhbFrame中使用update方法更新数据库,并且也支持连贯操作的使用。


$User = M("user"); // 实例化User对象  

// 要修改的数据对象属性赋值  

$data['name'] = 'Dyhb';  

$data['email'] = 'doyouhaobaby@gmail.com';   

$User->save($data,5); // 根据条件保存修改的数据 

 

四、删除数据

在DyhbFrame中使用del方法删除数据库中的记录。同样可以使用连贯操作进行删除操作。


$User = M("user"); // 实例化User对象  

$User->where('id=5')->del(); // 删除id为5的用户数据  

$User->where('status=0')->del(); // 删除所有状态为0的用户数据 

$User->del('status=0');// 删除所有状态为0的用户数据

$User->del->(5);// 删除id为5的用户数据

 


del方法可以用于删除单个或者多个数据,主要取决于删除条件,也就是where方法的参数,也可以用order和limit方法来限制要删除的个数,例如:

// 删除所有状态为0的5 个用户数据 按照创建时间排序

$User->where('status=0')->order('create_time')->limit('5')->del();