# 框架数据对象使用示例
# 初始化
- 引用init.php文件(如果在根路径下)
- 示例:如果文件在根路径下引用: require_once("init.php");
- 可以使用根路径下的test.php测试验证框架的通用方法。
# 实例方法示例
save: 保存数据对象
- 说明: 保存用户信息
- 代码如下:
$user = new User(); $user->setUsername("betterlife"); $user->setPassword("123456"); $user_id = $user->save(); if ( $user_id ) echo("新增用户标识:" . $user_id); else echo("新增用户失败!");
- 输出显示如下:
新增用户标识:3
update: 更新数据对象
- 说明: 修改用户信息
- 代码如下:
$user = User::getById( 3 ); $user["username"] = "shanghai"; $user->update(); if ( $user ) echo("修改用户信息成功!"); else echo("修改用户信息失败!");
- 输出显示如下:
修改用户信息成功!
saveOrUpdate: 保存或修改数据对象
- 说明: 保存或更新用户信息
- 代码如下:
$user = User::getById( 3 ); $user["username"] = "shanghai"; $user_id = $user->saveOrUpdate(); if ( $user_id > 1 ) echo("新增用户标识:" . $user_id); elseif ( $user_id == true ) echo("修改用户信息成功!");else echo("修改用户信息失败!");
- 输出显示如下:
修改用户信息成功!
delete: 删除数据对象
- 说明: 删除用户信息
- 代码如下:
$user = User::getById( 3 ); $isDelete = $user->delete(); if ( $isDelete ) echo("删除用户信息成功!"); else echo("删除用户信息失败!");
- 输出显示如下:
删除用户信息成功!
# 类方法示例
updateProperties: 更新对象指定的属性
- 说明: 修改用户指定的信息
- 代码如下:
$isUpdate = User::updateProperties( "1,2", "loginTimes=100" ); if ( $isUpdate ) echo("修改用户信息成功!"); else echo("修改用户信息失败!");
- 输出显示如下:
修改用户信息成功!
updateBy: 根据条件更新数据对象指定的属性
- 说明: 修改用户指定的信息
- 代码如下:
$isUpdate = User::updateBy( "username='admin'","loginTimes=500" ); if ( $isUpdate ) echo("修改用户信息成功!"); else echo("修改用户信息失败!");
- 输出显示如下:
修改用户信息成功!
deleteByID: 由标识删除指定ID数据对象
- 说明: 删除指定标识的用户
- 代码如下:
$isDelete = User::deleteByID( 4 ); if ( $isDelete ) echo("删除用户信息成功!"); else echo("删除用户信息失败!");
- 输出显示如下:
删除用户信息成功!
deleteByIds: 根据主键删除多条记录
- 说明: 删除多条指定标识的用户
- 代码如下:
$isDelete = User::deleteByIds( "5,6,7" ); if ( $isDelete ) echo("删除用户信息成功!"); else echo("删除用户信息失败!");
- 输出显示如下:
删除用户信息成功!
deleteBy: 根据条件删除多条记录
- 说明:删除指定条件的用户
- 代码如下:
说明:删除指定条件的用户 代码如下: $isDelete = User::deleteBy( "username='betterlife7'" ); if ( $isDelete ) echo("删除用户信息成功!"); else echo("删除用户信息失败!");
- 输出显示如下:
删除用户信息成功!
increment: 对属性进行递增
- 说明: 用户访问次数+5
- 代码如下:
$isPlus = User::increment( "user_id>1", "loginTimes", 5 ); if ( $isPlus ) echo("用户访问次数+5成功!"); else echo("用户访问次数+5失败!");
- 输出显示如下:
用户访问次数+5成功!
decrement: 对属性进行递减
- 说明: 用户访问次数-3
- 代码如下:
$isMinus = User::decrement( "user_id>1", "loginTimes",3 ); if ( $isMinus ) echo("用户访问次数-3成功!"); else echo("用户访问次数-3失败!");
- 输出显示如下:
用户访问次数-3成功!
existByID: 由标识判断指定ID数据对象是否存在
- 说明: 查看标识为1的用户是否存在
- 代码如下:
$isExist = User::existByID( 1 ); if ( $isExist ) echo("指定标识的用户存在!"); else echo("指定标识的用户不存在!");
- 输出显示如下:
指定标识的用户存在!
existBy: 判断符合条件的数据对象是否存在
- 说明: 查看用户名为china的用户是否存在
- 代码如下:
$isExist = User::existBy( "username='china'" ); if ( $isExist ) echo("用户名为china的用户存在!"); else echo("用户名为china的用户不存在!");
- 输出显示如下:
用户名为china的用户存在!
select: 查询当前对象需显示属性的列表
- 说明: 查看博客名称列表
- 代码如下:
$blog_names = Blog::select( "blog_name" ); print_r($blog_names);
- 输出显示如下:
Array ( [0] => 名校公开课 [1] => EditArea [2] => PHPLinq [3] => 地图导航第三方库 [4] => Web在线编辑器 )
selectOne: 查询当前对象单个需显示的属性
- 说明: 查看一个博客名称
- 代码如下:
$blog_name = Blog::selectOne( "blog_name" ); print_r($blog_name);
- 输出显示如下:
名校公开课
get: 查询数据对象列表
- 说明: 查看博客列表
- 代码如下:
$blogs = Blog::get(); print_r($blogs);
- 输出显示如下:
Array ( [0] => Blog Object ( [blog_id] => 5 [user_id] => 1 [blog_name] => 名校公开课 [blog_content] => 来自新浪、搜狐、网易和QQ的名校公开课。 [id:protected] => [commitTime] => 1331953386 [updateTime] => 2013-12-26 15:27:05 ) ...... )
getOne: 查询得到单个对象实体
- 说明: 查看一个博客
- 代码如下:
$blog = Blog::getOne(); print_r($blog);
- 输出显示如下:
Blog Object ( [blog_id] => 5 [user_id] => 1 [blog_name] => 名校公开课 [blog_content] => 来自新浪、搜狐、网易和QQ的名校公开课。 [id:protected] => [commitTime] => 1331953386 [updateTime] => 2013-12-26 15:27:05 )
getById: 根据表ID主键获取指定的对象
- 说明: 查看指定标识的博客
- 代码如下:
$blog = Blog::getById( 1 ); print_r($blog);
- 输出显示如下:
Blog Object ( [blog_id] => 1 [user_id] => 1 [blog_name] => Web在线编辑器 [blog_content] => 搜索关键字:在线编辑器... [id:protected] => [commitTime] => 1331953386 [updateTime] => 2013-12-26 15:27:05 )
count: 数据对象总计数
- 说明: 查看博客的数量
- 代码如下:
$countBlogs = Blog::count(); echo($countBlogs);
- 输出显示如下:
5
queryPage: 数据对象分页
- 说明: 查看从第1到5条博客记录
- 代码如下:
$blogs = Blog::queryPage( 1, 5 ); print_r($blogs);
- 输出显示如下:
Array ( [0] => Blog Object ( [blog_id] => 5 [user_id] => 1 [blog_name] => 名校公开课 [blog_content] => 来自新浪、搜狐、网易和QQ的名校公开课。 [id:protected] => [commitTime] => 1331953386 [updateTime] => 2013-12-26 15:27:05 ) ..... )
queryPageByPageNo: 数据对象分页根据当前页数和每页显示记录数
- 说明: 查看第一页的博客记录,每页3条记录,无查询条件
- 代码如下:
$blogs = Blog::queryPageByPageNo( 1, null, 3 ); print_r($blogs);
- 输出显示如下:
Array ( [count] => 5 [pageCount] => 2 [data] => Array ( [0] => Blog Object ( [blog_id] => 5 [user_id] => 1 [blog_name] => 名校公开课 [blog_content] => 来自新浪、搜狐、网易和QQ的名校公开课。 [id:protected] => [commitTime] => 1331953386 [updateTime] => 2013-12-26 15:27:05 ) ...... ) )
# 数据对象关系调用示例
数据对象关系定义详细说明请参考数据对象规格说明相关章节说明。
一对一[has_one]
- 说明: 查看用户详情
- 定义示例:
class Userdetail extends DataObject { static $belongs_has_one = array( "user" => "User" );
- 代码如下:
$user = User::getById( 1 ); $userdetail = $user->userdetail; print_r($userdetail);
- 输出显示如下:
Userdetail Object ( [userdetail_id] => 1 [user_id] => 1 [realname] => 周月璞 [profile] => userdetail/profile/20140211094832.png [country] => 1 [province] => 25 [city] => 321 [district] => 2709 [address] => 上海市石岚三村80号404室 [qq] => 412731900 [sex] => 1 [birthday] => 1979-03-10 [id:protected] => [commitTime] => 1331953386 [updateTime] => 2014-01-09 19:39:52 )
一对多[has_many]
- 说明: 查看博客评论
- 定义示例:
class Blog extends DataObject { static $has_many = array( "comments" => "Comment", );
- 代码如下:
$blog = Blog::getById( 1 ); $comments = $blog->comments; print_r($comments);
- 输出显示如下:
Array ( [0] => Comment Object ( [comment_id] => 6 [user_id] => 2 [comment] => WebWiz RichTextEditor:<a href="http://www.webwiz.co.uk/webwizrichtexteditor/" target="_blank">http://www.webwiz.co.uk/webwizrichtexteditor/</a> 这是一个商业产品,并不免费,但功能非常丰富,基于 ASP,JavaScript 和 DHTML。 [blog_id] => 1 [id:protected] => [commitTime] => 1331953386 [updateTime] => 2012-03-17 12:37:46 ) ...... )
多对多[many_many]
- 说明:查看用户角色
- 定义示例:
class User extends DataObject { static $many_many = array( "roles" => "Role", );
- 代码如下:
$user = User::getById( 1 ); $roles = $user->roles; print_r($roles);
- 输出显示如下:
Array ( [0] => Role Object ( [role_id] => 1 [role_name] => 项目经理 [id:protected] => [commitTime] => 1331953386 [updateTime] => 2015-01-17 20:51:45 ) ...... )
从属于一对一[belong_has_one]
- 说明:获取用户信息
- 定义示例:
class Userdetail extends DataObject { static $belongs_has_one = array( "user" => "User" );
- 代码如下:
$userdetail = Userdetail::getById( 1 ); $user = $userdetail->user; print_r($user);
- 输出显示如下:
User Object ( [user_id] => 1 [username] => admin [password] => 21232f297a57a5a743894a0e4a801fc3 [email] => skygreen2001@gmail.com [cellphone] => 13917320293 [loginTimes] => 0 [id:protected] => [commitTime] => 1331953415 [updateTime] => 2013-12-26 14:31:27 )
从属于多对多[belongs_many_many]
- 说明:查看角色用户
- 定义示例:
class Role extends DataObject { static $belongs_many_many = array( "users" => "User" );
- 代码如下:
$role = Role::getById( 1 ); $users = $role->users; print_r($users);
- 输出显示如下:
Array ( [0] => User Object ( [user_id] => 1 [username] => admin [password] => 21232f297a57a5a743894a0e4a801fc3 [email] => skygreen2001@gmail.com [cellphone] => 13917320293 [loginTimes] => 0 [id:protected] => [commitTime] => 1331953415 [updateTime] => 2013-12-26 14:31:27 ) ...... )
# 其它实例方法示例
toXml: 数据对象转换成xml字符串
- 说明: 博客转换成xml字符串
- 代码如下:
$blog = Blog::getOne(); echo($blog->toXml());
- 输出显示如下:
<?xml version="1.0" encoding="utf-8"?> <Blog> <blog_id>5</blog_id> <user_id>1</user_id> <blog_name>名校公开课</blog_name> <blog_content>来自新浪、搜狐、网易和QQ的名校公开课。</blog_content> <commitTime>1331953386</commitTime> <updateTime>2013-12-26 15:27:05</updateTime> </Blog>
toJson: 数据对象转换成Json字符串
- 说明: 博客转换成Json字符串
- 代码如下:
$blog = Blog::getOne(); echo($blog->toJson());
- 输出显示如下:
{"blog_id":5,"user_id":1,"blog_name":"\u540d\u6821\u516c\u5f00\u8bfe","blog_content":"\u6765\u81ea\u65b0\u6d6a\u3001\u641c\u72d0\u3001\u7f51\u6613\u548cQQ\u7684\u540d\u6821\u516c\u5f00\u8bfe\u3002","commitTime":1331953386,"updateTime":"2013-12-26 15:27:05"}
toArray: 数据对象转换成数组
- 说明: 博客转换成数组
- 代码如下:
$blog = Blog::getOne(); print_r($blog->toArray());
- 输出显示如下:
Array ( [blog_id] => 5 [user_id] => 1 [blog_name] => 名校公开课 [blog_content] => 来自新浪、搜狐、网易和QQ的名校公开课。 [id] => [commitTime] => 1331953386 [updateTime] => 2013-12-26 15:27:05 )
saveRelationForManyToMany[数据对象多对多存储]
说明: 存储角色用户多对多关系
代码如下:
$role = new Role(); $role->role_id = 5; $role->role_name = "高级程序员"; UtilDateTime::ChinaTime(); $role->save(); $role->saveRelationForManyToMany( "users", "1" ); print_r($role);
输出显示如下:
Role Object ( [role_id] => 5 [role_name] => 高级程序员 [commitTime] => 1422779198 [updateTime] => 2015-02-01 16:26:38 )
# 其它类方法示例
max: 获取数据对象指定属性[表列]最大值
- 说明: 获取用户访问次数最高的次数
- 代码如下:
$max = User::max( "loginTimes" ); echo($max);
- 输出显示如下:
500
min: 获取数据对象指定属性[表列]最小值
- 说明: 获取用户访问次数最低的次数
- 代码如下:
$min = User::min( "loginTimes" ); echo($min);
- 输出显示如下:
2
sum: 获取数据对象指定属性[表列]总和
- 说明: 获取用户访问次数的总和
- 代码如下:
$sum = User::sum( "loginTimes" ); echo($sum);
- 输出显示如下:
630
countMultitable: 对象总计数[多表关联查询]
- 说明: 获取博客名称含有Web的评论数
- 代码如下:
$count = Comment::countMultitable( "Blog a,Comment b", "b.blog_id=a.blog_id and a.blog_name like '%Web%'" ); echo($count);
- 输出显示如下:
6
- queryPageMultitable: 对象分页[多表关联查询]
- 说明:获取博客名称含有Web的评论
- 代码如下:
$comments = Comment::queryPageMultitable( 1, 6, "Blog a,Comment b","b.blog_id=a.blog_id and a.blog_name like '%Web%'" ); print_r($comments);
- 输出显示如下:
Array ( [0] => Comment Object ( [comment_id] => 6 [user_id] => 2 [comment] => WebWiz RichTextEditor:<a href="http://www.webwiz.co.uk/webwizrichtexteditor/" target="_blank">http://www.webwiz.co.uk/webwizrichtexteditor/</a> 这是一个商业产品,并不免费,但功能非常丰富,基于 ASP,JavaScript 和 DHTML。 [blog_id] => 1 [id:protected] => [commitTime] => 1331953386 [updateTime] => 2012-03-17 12:37:46 ) ...... )