PHP开发框架YiiFramework教程(26)数据库-ActiveRecord示例
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP开发框架YiiFramework教程(26)数据库-ActiveRecord示例,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3977字,纯文字阅读大概需要6分钟。
内容图文
![PHP开发框架YiiFramework教程(26)数据库-ActiveRecord示例](/upload/InfoBanner/zyjiaocheng/148/2b44ac5cec7c47d49608a29da0b97fe3.jpg)
这里修改Yii Framework 开发教程(24) 数据库-DAO 示例 ,看看使用Active Record如何读取Employee表。
要访问一个数据表,我们首先需要通过集成 CActiveRecord 定义 一个 AR 类。 每个 AR 类代表一个单独的数据表,一个 AR 实例则代表那个表中的一行。
由于 AR 类经常在多处被引用 ,我们可以导入包含 AR 类的整个目录,而不是一个个导入。 例如,如果我们所有的 AR 类文件都在 protected/models 目录 中,我们可以配置应用如下:
'import'=>array( 'application.models.*', ),
本例定义Employee类如下:
class Employee extends CActiveRecord { public static function model($className=__CLASS__) { return parent::model($className); } public function tableName() { return 'Employee'; } }
数据表行中列的值可以作为相应 AR 实例的属性访问。比如 $employee->EmployeeId 可以访问Employee的 EmployeeId字段。
本例只是读取Employee表,修改SiteController的indexAction方法:
public function actionIndex(){$model = Employee::model()->findAll(); $this->render('index', array('model' => $model, ));}
可以看到只要一行代码 Employee::model()->findAll()就实现读取数据库表并赋值功能,来看看对应的显示记录的代码:
{ echo 'EmployeeId:' . $employee->EmployeeId . '';echo 'First Name:' . $employee->FirstName . ''; echo 'Last Name:' . $employee->LastName . '';echo 'Title:' . $employee->Title . ''; echo 'Address:' . $employee->Address . '';echo 'Email:' . $employee->Email . ''; echo '----------------------';} ?>
可以看到使用AR可以通过数据库表的字段名(区分大小写)直接访问某个字段值,而无需在类Employee定义, 从而大大简化代码。
在前面介绍Model时说过CModel有两个子类,一个是FormModel,另外一个就是CActiveRecord, CActiveRecord定义了数据库访问的CRUD方法,比如
创建记录
要向数据表中插入新行,我们要创建一个相应 AR 类的实例,设置其与表的列相关的属性,然后调用 save() 方法完成插入
$employee=new Employee; $employee->FirstName='James'; $employee->LastName='Shen'; ... $employee->save();
如果表的主键是自增的,在插入完成后,AR 实例将包含一个更新的主键。如果一个列在表结 构中使用了静态默认值(例如一个字符串,一个数字)定义。
读取记录
要读取数据表中的数据,我们可以通过如 下方式调用 find 系列方法中的一种
// 查找满足指定条件的结果中的第一行
$post=Post::model()->find($condition,$params);
// 查找具有指定主键值的那一行
$post=Post::model()->findByPk($postID,$condition,$params);
// 查找具有指定属性值的行
$post=Post::model()->findByAttributes($attributes,$condition,$params);
// 通过指定的 SQL 语句查找结果中的第一行
$post=Post::model()->findBySql($sql,$params);如上所示,我们通过 Post::model() 调用 find 方法。 请记 住,静态方法 model() 是每个 AR 类所必须的。 此方法返回在对象上下文中的一个用于访问类级别方法(类似于静态类方法的 东西)的 AR 实例。
如果 find 方法找到了一个满足查询条件的行,它将返回一个 Post 实例,实例的属性含有数据表 行中相应列的值。 然后我们就可以像读取普通对象的属性那样读取载入的值,例如 echo $post->title;。
如果使用 给定的查询条件在数据库中没有找到任何东西, find 方法将返回 null 。
调用 find 时,我们使用 $condition 和 $params 指定查询条件。此处 $condition 可以是 SQL 语句中的WHERE 字符串,$params 则是一个参数数组,其中的值应绑定 到 $condation 中的占位符。
更新记录
在 AR 实例填充了列的值之后,我们可以改变它们并把它们存回数据表。
$post=Post::model()->findByPk(10); $post->title='new post title'; $post->save(); // 将更改保存到数据库删除记录
如果一个 AR 实例被一行数据填充,我们也可以删除此行 数据
$post=Post::model()->findByPk(10); // 假设有一个帖子,其 ID 为 10 $post->delete(); // 从数据表中删除此行注意,删除之后, AR 实例仍然不变,但数据表中相应的行已经没了
其它可以参见Yii中文文档(http://www.yiiframework.com/doc/guide/1.1/zh_cn/database.ar),这里不再详细复述了。
本例显示结果:
以上就是PHP开发框架Yii Framework教程(26) 数据库-Active Record示例的内容,更多相关内容请关注PHP中文网(www.gxlcms.com)!
内容总结
以上是互联网集市为您收集整理的PHP开发框架YiiFramework教程(26)数据库-ActiveRecord示例全部内容,希望文章能够帮你解决PHP开发框架YiiFramework教程(26)数据库-ActiveRecord示例所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。