Zend Framework教程之Zend_Db_Table_Row用法实例分析


Posted in PHP onMarch 21, 2016

本文实例讲述了Zend Framework教程之Zend_Db_Table_Row用法。分享给大家供大家参考,具体如下:

1. 简介

Zend_Db_Table_Row是Zend Framework的行数据网关.通常来说,你不可以自己实例化Zend_Db_Table_Row, 而是通过调用Zend_Db_Table::find()方法或者Zend_Db_Table::fetchRow()方法将Zend_Db_Table_Row作为 结果数据返回过来.一旦你得到来一个Zend_Db_Table_Row对象,你可以修改记录值(体现为类的属性)然后 调用save()方法可以将更改保存到原表上.

2. 取回一条记录

首先,需要实例化一个Zend_Db_Table类.

<?php
// 设置一个 adapter
require_once 'Zend/Db.php';
$params = array (
  'host'   => '127.0.0.1',
  'username' => 'malory',
  'password' => '******',
  'dbname'  => 'camelot'
);
$db = Zend_Db::factory('PDO_MYSQL', $params);
// 为所有的Zend_Db_Table对象设置默认adapter
require_once 'Zend/Db/Table.php';
Zend_Db_Table::setDefaultAdapter($db);
// 连接到数据库中的某一个表
class RoundTable extends Zend_Db_Table {}
$table = new RoundTable();
?>

接下来,使用Zend_Db_Table::find()方法和主键进行查询,或者使 用Zend_Db_Table::fetchRow()方法查询.
得到的返回结果是一个Zend_Db_Table_Row 对象,该对象的属性名采用camelCaps的形式对应数据库中带下划线的表名.
如,表名 若为first_name,那么类中的改属性则为firstName.

<?php
// 从表中取回的结果数据是一个Zend_Db_Table_Row对象
$row = $table->fetchRow('first_name = "Robin"');
//
// $row现在是一个带有多种公有属性的Zend_Db_Table_Row对象
// that map to table columns:
//
// $row->id = '3'
// $row->nobleTitle = 'Sir'
// $row->firstName = 'Robin'
// $row->favoriteColor = 'yellow'
//
?>

3. 修改数据

修改行数据是一件很轻松的事情:只需要按照常规的方法修改类属性.然后调用save()方法 就将改变的结果保存到了数据表中.

<?php
// 连接到数据库中的表
class RoundTable extends Zend_Db_Table {}
$table = new RoundTable();
// 从表中取回的结果数据是一个Zend_Db_Table_Row对象
$row = $table->fetchRow('first_name = "Robin"');
//
// $row现在是一个带有多种公有属性的Zend_Db_Table_Row对象
// that map to table columns:
//
// $row->id = '3'
// $row->nobleTitle = 'Sir'
// $row->firstName = 'Robin'
// $row->favoriteColor = 'yellow'
//
// 改变favorite color字段,并且将变动存储到数据表中.
$row->favoriteColor = 'blue';
$row->save();
?>

但是,你不能够修改主键的值.假如你试图进行改操作, Zend_Db_Table_Row将抛出一个异常.

<?php
// 连接到数据库中的表
class RoundTable extends Zend_Db_Table {}
$table = new RoundTable();
// fetch a record from the table as a Zend_Db_Table_Row object
$row = $table->fetchRow('first_name = "Robin"');
// 我们尝试修改主键值
try {
  $row->id = 5;
  echo "We should not see this message, as an exception was thrown.";
} catch (Zend_Db_Table_RowException $e) {
  echo $e->getMessage();
}
?>

希望本文所述对大家基于Zend Framework框架的PHP程序设计有所帮助。

PHP 相关文章推荐
php中文件上传的安全问题
Oct 09 PHP
用Php实现链结人气统计
Oct 09 PHP
PHP4 与 MySQL 交互使用
Oct 09 PHP
Ajax+PHP 边学边练 之二 实例
Nov 24 PHP
javascript,php获取函数参数对象的代码
Feb 03 PHP
深入PHP FTP类的详解
Jun 13 PHP
Laravel中扩展Memcached缓存驱动实现使用阿里云OCS缓存
Feb 10 PHP
php动态函数调用方法
May 21 PHP
Zend Framework基于Command命令行建立ZF项目的方法
Feb 18 PHP
PHP实现按之字形顺序打印二叉树的方法
Jan 16 PHP
laravel多条件查询方法(and,or嵌套查询)
Oct 09 PHP
laravel添加前台跳转成功页面示例
Oct 22 PHP
Zend Framework教程之Zend_Db_Table用法详解
Mar 21 #PHP
PHP函数checkdnsrr用法详解(Windows平台用法)
Mar 21 #PHP
PHP常见数组函数用法小结
Mar 21 #PHP
老司机传授Ubuntu下Apache+PHP+MySQL环境搭建攻略
Mar 20 #PHP
Zend Framework入门知识点小结
Mar 19 #PHP
Zend Framework缓存Cache用法简单实例
Mar 19 #PHP
Zend Framework基本页面布局分析
Mar 19 #PHP
You might like
[EPIC] Larva vs Flash ZvT @ Crossing Field [2017-10-09]
2020/03/17 星际争霸
Ajax PHP分页演示
2007/01/02 PHP
PHP 反射机制实现动态代理的代码
2008/10/22 PHP
PHP管理依赖(dependency)关系工具 Composer的自动加载(autoload)
2014/08/18 PHP
PHP类的反射用法实例
2014/11/03 PHP
php结合web uploader插件实现分片上传文件
2016/05/10 PHP
PHP开发制作一个简单的活动日程表Calendar
2016/06/20 PHP
php版微信公众平台实现预约提交后发送email的方法
2016/09/26 PHP
修改yii2.0用户登录使用的user表为其它的表实现方法(推荐)
2017/08/01 PHP
利用Laravel生成Gravatar头像地址的优雅方法
2017/12/30 PHP
建议大家看下JavaScript重要知识更新
2007/07/08 Javascript
JS运动框架之分享侧边栏动画实例
2015/03/03 Javascript
jQuery动态背景图片效果实现方法
2015/07/03 Javascript
jQuery1.9.1源码分析系列(十六)ajax之ajax框架
2015/12/04 Javascript
Js动态设置rem来实现移动端字体的自适应代码
2016/10/14 Javascript
JS作用域闭包、预解释和this关键字综合实例解析
2016/12/16 Javascript
NodeJS、NPM安装配置步骤(windows版本) 以及环境变量详解
2017/05/13 NodeJs
Vue中 v-if 和v-else-if页面加载出现闪现的问题及解决方法
2018/10/12 Javascript
Webpack4 使用Babel处理ES6语法的方法示例
2019/03/07 Javascript
JavaScript前端页面搜索功能案例【基于jQuery】
2019/07/10 jQuery
使用ThinkJs搭建微信中控服务的实现方法
2019/08/08 Javascript
在vue中实现某一些路由页面隐藏导航栏的功能操作
2020/09/21 Javascript
[01:19:35]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第二局
2016/03/05 DOTA
python分布式环境下的限流器的示例
2017/10/26 Python
python机器学习之神经网络(三)
2017/12/20 Python
Python 3.6打包成EXE可执行程序的实现
2019/10/18 Python
Python对象的属性访问过程详解
2020/03/05 Python
使用Python获取当前工作目录和执行命令的位置
2020/03/09 Python
python使用nibabel和sitk读取保存nii.gz文件实例
2020/07/01 Python
python如何停止递归
2020/09/09 Python
python利用paramiko实现交换机巡检的示例
2020/09/22 Python
CSS3 实现的加载动画
2020/12/07 HTML / CSS
优衣库台湾官网:UNIQLO台湾
2019/02/01 全球购物
成人大专生实习期的自我评价
2013/10/02 职场文书
2015年度公共机构节能工作总结
2015/05/26 职场文书
关于五一放假的通知
2015/08/18 职场文书